为了自动填充登录页面,我创建了一个代码来指示python尝试外部列表中的不同用户名,直到找到正确的用户名为止。但是当我运行代码时,它只尝试列表中的第一个用户名,然后停止。i、 e它不会尝试剩余的用户名值。请帮助我使脚本工作,因为我想。多谢各位
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
将对象password
和username
作为当前页面上元素的引用,当您单击按钮submit
时,它将加载新页面,并且所有引用都将丢失-这将给出错误消息"element is not attached to the page document"
在每次重新加载页面之后,您必须再次使用
find_element_by_id
来访问字段password
和username
-因此您必须在for
循环内执行此操作如果用户名正确并登录,则密码和用户名字段不再可用。您可以退出驱动程序并在循环中重新开始
每当用户名出错时,加载下一页都会花费一些时间,如果它给了您not find element types错误,这意味着您只需要使用一些时间睡眠到代码的最后一个部分就可以正确地完成
相关问题 更多 >
编程相关推荐