Holen Sie sich die ASP Datepicker-Steuerung mit Python und Selen und automatisieren Sie sie

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.

Datepicker-Steuerung ist Tabelle

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.

  1. Klicken Sie auf das Datepicker-Steuerelement
  2. Rufen Sie das generierte Kalendertabellen-Tag ab
  3. Mach was du willst

Beispiel, um das Datum automatisch durch Angabe des Datums zu erhalten

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)

Warum Sie auf den Titel klicken

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.

Warum auf das vorherige und das nächste Jahr klicken, um das Jahr auszuwählen?

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.

Warum wird es aus dem Titel mit XPath erhalten?

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.

abschließend

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

Holen Sie sich die ASP Datepicker-Steuerung mit Python und Selen und automatisieren Sie sie
Rufen Sie den Wert des Dropdown-Menüs mit Python und Selen ab und legen Sie ihn fest
Ich habe versucht, Web-Scraping mit Python und Selen
Python-Programmierung: Ich habe versucht, Nachrichtenartikel mit Selenium und BeautifulSoup4 abzurufen (zu crawlen)
Automatisieren Sie Chrome mit Python und Selen auf Ihrem Chromebook
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
Starten Sie mit Python zu Selen
Instrumentensteuerung mit Python [pyvisa]
[Python] Quotient und Überschuss erhalten
Fordern Sie Python3 und Selenium Webdriver heraus
Die I2C-Kommunikation erfolgt durch Steuerung der seriellen Kommunikation mit Python (über ein USBGPIO8-Gerät).
Holen Sie sich eine englische Übersetzung mit Python Google Translation Selen (Hinweis)
Serielle Kommunikationssteuerung mit Python- und SPI-Kommunikation (mit USBGPIO8-Gerät)
Authentifizierung mit Tweepy-User-Authentifizierung und Anwendungsauthentifizierung (Python)
Scraping mit Python, Selen und Chromedriver
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Clustering und Visualisierung mit Python und CytoScape
Selen und Python zum Öffnen von Google
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Python> Wörterbuch> Werte ()> Alle Werte mithilfe von Werten abrufen ()
Holen Sie sich Suica Balance in Python (mit libpafe)
Verwenden von Python und MeCab mit Azure Databricks
[Steuerungstechnik] Grafische Darstellung der Übertragungsfunktionen von Python
Holen Sie sich mit Selenium Twitter-Lesezeichen auf CentOS
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Üben des Web-Scrapings mit Python und Selen
Ich verwende Tox und Python 3.3 mit Travis-CI
Schätzung der Kopforientierung mit Python und OpenCV + dlib
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Entwickeln und Bereitstellen von Python-APIs mit Kubernetes und Docker
[Python] Holen Sie sich alle Kommentare mit Youtube Data Api
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Python-Entwicklungsablauf mit Poetry, Git und Docker
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Holen Sie sich den Git-Zweignamen und den Tag-Namen mit Python
Mit dem Evernote SDK für Python 3 erhalten Sie Informationen zu Notizen
Erstellen Sie eine Webmap mit Python und GDAL
Ziehen Sie eine lokale Datei mit Selenium (Python) per Drag & Drop.
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
[Python3] Automatische Texterzeugung mit janome und markovify
Versuchen Sie es mit Tensorflow. ① Erstellen Sie eine Python-Umgebung und führen Sie Tensorflow ein
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Ich möchte benutzerdefinierte Datenattribute von HTML als Elemente mit Python Selenium erhalten
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.