[英]How to make the list loop working in selenium python?
為了自動填充登錄頁面,我創建了一個代碼來指示 python 從外部列表嘗試不同的用戶名,直到找到正確的用戶名。 但是當我運行代碼時,它只嘗試列表中的第一個用戶名,然后停止。 即它不會嘗試剩余的用戶名值。 請幫助我使腳本按我的意願工作。 謝謝你。
from selenium import webdriver
PATH = "C:\Program Files (x86)\chromedriver.exe"
webdriver = webdriver.Chrome(PATH)
webdriver.get("https://examplewebsite.com/login/index.php")
password = webdriver.find_element_by_id("password")
password.send_keys("Helloworld1@")
username = webdriver.find_element_by_id("username")
usernamefile = open("list.txt", "r")
for i in usernamefile:
username.send_keys(i)
submit = webdriver.find_element_by_id("loginbtn")
submit.submit()
編輯:這是 python 顯示的錯誤。 我不知道如何解決它。
File "C:\Users\Ranjhaaa\Desktop\test.py", line 23, in <module>
username.send_keys(i)
File "C:\Users\Ranjhaaa\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py", line 477, in send_keys
self._execute(Command.SEND_KEYS_TO_ELEMENT,
File "C:\Users\Ranjhaaa\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\Ranjhaaa\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\Ranjhaaa\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=87.0.4280.88)
每當用戶名出錯時,如果它給您找不到元素類型錯誤,則需要一些時間來加載下一頁,這意味着您只需要使用一些時間睡眠到最后的代碼才能正確執行
selenium
保留您的 object password
和username
作為當前頁面上元素的參考,當您單擊按鈕submit
時,它會加載新頁面並且所有參考都丟失 - 這會給出您的錯誤消息"element is not attached to the page document"
。
每次重新加載頁面后,您必須再次使用find_element_by_id
來訪問字段password
和username
- 所以您必須在for
-loop 內部進行
usernamefile = open("list.txt", "r")
for i in usernamefile:
password = webdriver.find_element_by_id("password")
password.send_keys("Helloworld1@")
username = webdriver.find_element_by_id("username")
username.send_keys(i)
submit = webdriver.find_element_by_id("loginbtn")
submit.submit()
from selenium import webdriver
PATH = "C:\Program Files (x86)\chromedriver.exe"
usernamefile = open("list.txt", "r")
for i in usernamefile:
webdriver = webdriver.Chrome(PATH)
webdriver.get("https://examplewebsite.com/login/index.php")
username = webdriver.find_element_by_id("username")
password = webdriver.find_element_by_id("password")
password.send_keys("Helloworld1@")
username.send_keys(i)
submit = webdriver.find_element_by_id("loginbtn")
submit.submit()
driver.quit()
如果用戶名正確並登錄,則密碼和用戶名字段不再可用。 您可以退出驅動程序並在循環中重新開始
從 selenium 導入 webdriver
file_path = "您的 chromedriver 的可執行路徑"
用戶名 = open("list.txt", "r")
對於用戶名中的 i:瀏覽器 = webdriver.Chrome(file_path)
browser.get("https://examplewebsite.com/login/index.php")
username = webdriver.find_element_by_id("username")
username.send_keys(i)
password = webdriver.find_element_by_id("password")
password.send_keys("Helloworld1@")
submit = webdriver.find_element_by_id("loginbtn")
submit.submit()
# then close the driver and start again the loop
browser.close()
# also you can use the refresh function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.