Heute werden wir die automatische Übermittlung eines Formulars nutzen, um die Verwendung von Selen weiter zu erlernen
Übungsziele
0 ) Verwenden Sie Selenium, um Firefox zu starten und die angegebene Seite zu laden (Sie können meinen Artikel für diesen Teil ansehen)
1) Suche nach Seitenelementen (mehrere Suchmethoden: find_element_*)
2) Füllen von Inhalten (send_keys))
3) Wechseln zwischen Iframe und übergeordneter Seite (switch_to_frame dient zum Wechseln zu Iframe, switch_to_default_content dient zum Wechseln zur Hauptseite)
4) Browser-Interaktion Verarbeitung: window.alert, window.confirm, window .prompt
Um mit den oben genannten drei Browsern zu interagieren, müssen Sie switch_to_alert verwenden. Es gibt mehrere Verwendungen, die beachtet werden müssen:
a ) Accept(): Senden Sie einen Bestätigungsbefehl, der dem Klicken auf die Schaltfläche „OK“ entspricht
b) dismiss(): Brechen Sie den Vorgang ab, was dem Klicken auf die Schaltfläche „Abbrechen“ oder dem Klicken auf „Schließen“ entspricht. in der oberen rechten Ecke
c) send_keys: der Inhalt, der in das Eingabeaufforderungsfeld eingegeben werden muss
Vorbereitung
HTML-Seite (Registrierungsseite mit darin eingebettetem Registrierungsformular; der Grund für dieses Beispiel ist die Einführung in die Verwendung von switch_to_frame zum Üben von Selen)
1) Registrierungsseite (Pfad D :RegisterDEMOindex.htm)
<!DOCTYPE> <html> <head> <title>用户注册</title> <meta charset="utf-8" /> </head> <body> <h3>测试Python selenium自动提交表单</h3> <iframe id="register_iframe" width="320" height="200" border="0" src="register.htm" /> </body> </html>
2) Registrierungsformular (Pfad D:RegisterDEMOregister) .htm)
<!DOCTYPE> <html> <head> <title>这是内嵌表单</title> <meta charset="utf-8" /> <style type="text/css"> input[type='text']{border:1px solid #abc; font-size:14px; padding:5px; width:200px;} input[type='password']{border:1px solid #abc; font-size:14px; padding:5px; width:200px;} input[type='submit']{border:1px solid #abc; font-size:14px; padding:5px 10px; width:100px; cursor:pointer; margin-top:20px;} input[type='submit']:hover{background-color:#aaaaff;} </style> </head> <body> <form action="/register/regaction" method="POST"> <table> <tr> <td>用户名:</td> <td><input id="txt_account" type="text" value="" placeholder="用户名" /></td> </tr> <tr> <td>密码:</td> <td><input id="txt_password" type="password" value="" placeholder="密码" /></td> </tr> <tr> <td>电子邮箱:</td> <td><input id="txt_email" type="text" value="" placeholder="电子邮箱" /></td> </tr> <tr> <td> </td> <td><input id="btn_register" type="submit" value="提交注册" onclick="return confirm('是否确认提交注册');" /></td> </tr> </table> </form> </body> </html>
Laufschritte
Wir führen es Schritt für Schritt durch Python IDLE aus, was hilft, Schritt für Schritt zu verstehen, dass die Überraschungen endlos sind
1) Stellen Sie das Selenium-Modul vor
from selenium import webdriver
2) Starten Sie Firefox und laden Sie die Registrierungsseite
bs = webdriver.Firefox() bs.get('file:///D:/RegisterDEMO/index.htm')
3) Suchen Sie das Eingabefeld (Benutzername, Passwort, E-Mail) und die Schaltfläche (Registrierung absenden) und füllen Sie sie aus den angegebenen Inhalt
# 由于表单内容是嵌在iframe里的,所以需要查找指向至iframe # 如果又想跳出iframe,回到父页面,可以使用 bs.switch_to_default_content() bs.switch_to_frame('register-iframe') # 由于所有的元素都命名了id,可以使用find_element_by_id,还有很多的其它find_element_*大家可以练习 # 查找用户名框,并填充“hertz.liu" account = bs.find_element_by_id('txt_account') account.send_keys('hertz.liu') # 查找密码框,并填充"pwd123" pwd = bs.find_element_by_id('txt_password') pwd.send_keys('pwd123') # 查找电子邮箱框,并填充”hertz.liu@mail.com" email = bs.find_element_by_id('txt_email') email.send_keys('hertz.liu@mail.com') # 查找提交按钮,并模拟点击提交 btn_reg = bs.find_element_by_id('btn_register') btn_reg.click()
4) Das Ausfüllen und Absenden des Formulars verlief reibungslos. Da es sich bei allgemeinen Formularen um Datenoperationen handelt, richten Entwickler einige sekundäre Bestätigungen ein, um Fehloperationen zu verhindern. Hier wird eine einfache Bestätigung für die sekundäre Bestätigung verwendet. Hier erfahren Sie, wie Selenium das Bestätigungsfeld identifiziert und auf die Schaltfläche „OK“ klickt
# 将查找对象转移至confirm confirm = bs.switch_to_alert() # 点击确定按钮 confirm.accept() # 如果要取消,使用confirm.dismiss() # 如果是prompt,则可以使用send_keys()先填充内容,再调用accept()或dismiss()
5) Browser-Gerät schließen
bs.close()
Das obige ist der detaillierte Inhalt vonPython automatisierte Formularübermittlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!