[PYTHON] Automatische Anmeldung bei ServiceNow mit Selenium Web Driver
◆ Übersicht
- Ich habe versucht, mich mit Selenium WebDriver, der zur Automatisierung von Web-UI-Tests verwendet wird, automatisch bei ServiceNow anzumelden.
◆ Betriebsumgebung
- OS: Windows10
- Python-Version: 3.8.0
◆ Vorbereitung
ServiceNow-Instanziierung
- Sie können eine Instanz für Entwickler erstellen, indem Sie ein Konto auf der Seite ServiceNow Developers registrieren.
- Wenn die Erstellung abgeschlossen ist, werden die Instanz-URL und die ersten Informationen des Administratorkontos angezeigt. Notieren Sie sich diese.
Vorbereitung der Python-Ausführungsumgebung
- Laden Sie das Installationsprogramm von Python Official Site herunter und installieren Sie es.
- Stellen Sie sicher, dass Pip enthalten ist.
Selen zubereiten
- Installieren Sie Selen mit Pip.
- Laden Sie den Treiber des Browsers herunter, den Sie von der [offiziellen Selenium-Website] ausführen möchten (https://www.seleniumhq.org/download/).
- Laden Sie "Google Chrome Driver" herunter, um diesmal auf Google Chrome ausgeführt zu werden.
- Platzieren Sie die heruntergeladene "chromedriver.exe" an einem beliebigen Ort.
◆ Versuchen Sie, Service Now zu betreiben
Starten Sie den Browser
- Geben Sie Google Chrome als Browser an und starten Sie es.
- Maximieren Sie übrigens das Fenster
from selenium import webdriver
#Starten Sie Google Chrome
driver = webdriver.Chrome(executable_path = 'Chrome-Treiberpfad')
#Fenster maximieren
driver.maximize_window()
Rufen Sie die ServiceNow-Anmeldeseite auf
- Geben Sie die URL für jede Instanz an, auf die zugegriffen werden soll.
#Rufen Sie die ServiceNow-Anmeldeseite auf
driver.get('https://<Name der ServiceNow-Instanz>.service-now.com/')
driver.implicitly_wait(20)
Elemente des Anmeldeformulars abrufen
- Da sich der Anmeldeformularteil im Iframe befindet, wird er bei Angabe der ID nicht gefunden und ein Fehler wird ausgegeben.
- Es ist notwendig, zuerst das Element iframe abzurufen und den Frame mit switch_to_frame zu verschieben.
- Wenn der Vorgang abgeschlossen ist, beenden Sie den iframe mit switch_to.default_content ().
#Rufen Sie das iframe-Element ab, das das Anmeldeformular enthält
login_iframe = driver.find_element_by_xpath("//*[@id='gsft_main']")
#Bewegen Sie sich in den angegebenen Iframe
driver.switch_to_frame(login_iframe)
#Elemente des Benutzernamenformulars abrufen&Geben Sie den Benutzernamen ein
user_name_form = driver.find_element_by_id('user_name')
user_name_form.send_keys("<Nutzername>")
#Holen Sie sich Elemente des Passwortformulars&Passworteingabe
password_form = driver.find_element_by_id('user_password')
password_form.send_keys("<Passwort>")
#Elemente für die Anmeldeschaltfläche abrufen&Klicken Sie auf die Schaltfläche Anmelden
login_button = driver.find_element_by_id('sysverb_login')
login_button.click()
driver.implicitly_wait(20)
#Beenden Sie iframe
driver.switch_to.default_content()
◆ Referenzseite