Dieser Artikel verwendet Python 3.6.0 und Selenium 3.4.0 (WebDriver ist Google Chrome).
Es fiel mir schwer, das von ASP erstellte Datepicker-Steuerelement (Dropdown-Kalender) zu erhalten, daher werde ich eine Notiz hinterlassen.
Das Datepicker-Steuerelement ist ein Steuerelement, das beim Klicken den Kalender herunterfährt. Als ich das abgelegte Steuerelement mit Google Chrome überprüfte, stellte ich fest, dass es aus Tabellen-Tags bestand. Daher kann es in der folgenden Reihenfolge erhalten werden.
Ich habe eine Funktion erstellt, die auf das entsprechende Datum klickt, wenn das gewünschte Datum angegeben ist.
DatepickerMove.py
#Übergeben Sie die Variable, bei der die Seite mit dem Datepicker-Steuerelement abgerufen wird, an den Browser
#Stellen Sie sicher, dass auf das Datepicker-Steuerelement geklickt wird, bevor Sie die Funktion ausführen
def DatepickerMove(browser, year, month, day):
#Klicken Sie auf den Titel, um den Auswahlbildschirm für Jahr / Monat anzuzeigen
calendar_title = browser.find_element_by_id('CalendarExtender1_title')
calendar_title.click()
calendar_prev = browser.find_element_by_id('CalendarExtender1_prevArrow')
calendar_next = browser.find_element_by_id('CalendarExtender1_nextArrow')
time.sleep(1)
#Überprüfen Sie das Jahr. Wenn es anders ist, bewegen Sie es je nach Größe in die entsprechende Richtung
#Begrenzen Sie die Schleife im Falle eines Durchgehens
limit_count = 100
for i in range(limit_count):
if calendar_title.text == year:
break
elif calendar_title.text > year:
calendar_prev.click()
elif calendar_title.text < year:
calendar_next.click()
else:
print('Die angegebene Anzahl von Prozessen wurde überschritten')
return
time.sleep(1)
#Holen Sie sich monatlich
month_title = year + 'Jahr' + month + 'Mond'
calendar_month = browser.find_element_by_xpath('//div[@title=\"' + month_title + '\"]')
calendar_month.click()
time.sleep(1)
#Holen Sie sich das Datum
day_title = month_title + day + 'Tag'
calendar_day = browser.find_element_by_xpath('//div[@title=\"' + day_title + '\"]')
calendar_day.click()
time.sleep(1)
DatepickerMove.py
browser.find_element_by_id('CalendarExtender1_title')
calendar_title.click()
calendar_prev = browser.find_element_by_id('CalendarExtender1_prevArrow')
calendar_next = browser.find_element_by_id('CalendarExtender1_nextArrow')
Durch Klicken auf das Datepicker-Steuerelement wird ein Kalender für das Datum generiert (dh ein regulärer Kalender). Wenn Sie auf den Titel klicken (z. B. den Teil "April 2017") Dieses Mal können das Jahr und Januar-Dezember anstelle des Datums ausgewählt werden. Das Arrangement von Januar bis Dezember unterscheidet sich vom Datum, da es 12 Tasten hat und das Arrangement fest und einfach zu handhaben ist. Es hat sich einmal in den Zustand des Jahres und des Monats geändert.
Wir haben auch ein Element, das beim Klicken auf das vorherige und das nächste Jahr verschoben wird.
DatepickerMove.py
limit_count = 100
for i in range(limit_count):
if calendar_title.text == year:
break
elif calendar_title.text > year:
calendar_prev.click()
elif calendar_title.text < year:
calendar_next.click()
else:
print('Die angegebene Anzahl von Prozessen wurde überschritten')
return
Wenn Sie wie oben auf den Titel klicken, ändert sich das Jahr in auswählbar. Da sich die Anordnung der Jahre jedoch je nach aktuellem Jahr ändert, dachte ich, dass es sicherer wäre, jedes Jahr eine Schleife zu erstellen und zu überprüfen, sodass ich nicht so viel darüber nachdachte.
DatepickerMove.py
#Holen Sie sich monatlich
month_title = year + 'Jahr' + month + 'Mond'
calendar_month = browser.find_element_by_xpath('//div[@title=\"' + month_title + '\"]')
calendar_month.click()
time.sleep(1)
#Holen Sie sich das Datum
day_title = month_title + day + 'Tag'
calendar_day = browser.find_element_by_xpath('//div[@title=\"' + day_title + '\"]')
calendar_day.click()
Bei einem Datum kann je nach Kalender das Datum des Vormonats ausgewählt werden. Wenn Sie beispielsweise versuchen, den 25. März 2017 abzurufen und 25 im Text anzugeben, erhalten Sie den 25. Februar 2017. Daher dachte ich, dass es sicherer wäre, den Titel mit dem vollständigen Namen auszuwählen, also tat ich dies.
Es ist weniger als einen Monat her, seit ich Python zum ersten Mal gelernt habe, daher kann das Codieren ein Problem sein. Es ist jedoch eine unterhaltsame Sprache, mit der Sie auch mit geringer Erfahrung problemlos verschiedene Dinge tun können.
Recommended Posts