Python 如何修复';消息:找不到元素:{quot;方法";:“名称”,选择器";:“用户名”}&;

Python 如何修复';消息:找不到元素:{quot;方法";:“名称”,选择器";:“用户名”}&;,python,selenium-webdriver,pythonanywhere,Python,Selenium Webdriver,Pythonanywhere,我的Python代码在我的PC上运行得非常好, 但当我把它上传到服务器时,它显示了错误。 请看代码,它很容易阅读 从pyvirtualdisplay导入显示 从selenium导入webdriver 导入时间 带Display(): 登录•Instagram 点击 Traceback (most recent call last): File "/home/Sourabh58/bot1.py", line 25, in <module> browser.find_elem

我的Python代码在我的PC上运行得非常好, 但当我把它上传到服务器时,它显示了错误。 请看代码,它很容易阅读

从pyvirtualdisplay导入显示 从selenium导入webdriver 导入时间

带Display():

登录•Instagram 点击

Traceback (most recent call last):
  File "/home/Sourabh58/bot1.py", line 25, in <module>
    browser.find_element_by_name("username").send_keys('be_fully_motivated')
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element
    'value': value})['value']
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/usr/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"name","selector":"username"}
回溯(最近一次呼叫最后一次):
文件“/home/Sourabh58/bot1.py”,第25行,在
浏览器。按名称(“用户名”)查找元素。发送密钥(“完全受激励”)
文件“/usr/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,第365行,按名称查找元素
返回self.find_元素(by=by.NAME,value=NAME)
文件“/usr/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,第752行,在find_元素中
'value':value})['value']
文件“/usr/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,执行中第236行
self.error\u handler.check\u响应(响应)
文件“/usr/lib/python3.7/site packages/selenium/webdriver/remote/errorhandler.py”,第192行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:无法定位元素:{“方法”:“名称”,“选择器”:“用户名”}
使用是某种形式的,因为即使元素以更快的速度出现,测试也会等待5秒钟

考虑重构您的代码以供使用,这样WebDriver将轮询DOM中元素的存在(或不存在),并在找到元素后立即继续

建议的代码更改:

driver.get('https://www.instagram.com/accounts/login')

username = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.NAME, 'username')))
username.send_keys("****")
password = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.NAME, 'password')))
password.send_keys("****")
10
节代表10秒的最大等待时间,您可以根据测试场景、网络带宽、应用程序响应时间等增加/减少它


更多信息:

只需等待页面加载,我想服务器中的页面没有加载。添加一个方法来检查页面是否已加载,然后执行操作。
driver.get('https://www.instagram.com/accounts/login')

username = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.NAME, 'username')))
username.send_keys("****")
password = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.NAME, 'password')))
password.send_keys("****")