当前位置: 首页 > 知识库问答 >
问题:

如何修复“消息:找不到元素:{”method“:”name“,”selector“:”username“}”

桑成荫
2023-03-14
browser = webdriver.Firefox()


try:

    browser.set_window_size(1080,800)

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

    print (browser.title)

    time.sleep(5)

    # i used the screenshot to cheek the problem , but the screenshot is totally
    # blank (just a whit screen )  

    browser.save_screenshot("screenshot.png")
    print("clicked..!")
    browser.find_element_by_name("username").send_keys('*****')
    browser.find_element_by_name("password").send_keys('*****')

finally:
    browser.quit()

登录·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"}

共有1个答案

涂羽
2023-03-14

使用time.sleep()是某种形式的反模式,因为即使元素在DOM中出现得更快,测试也要等待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("****")
 类似资料:
  • 问题内容: 我正在尝试使用selenium在kahoot.it网页上自动生成大量用户,以使它们出现在类的前面,但是,当我尝试访问inputSession项时(在其中写入gameID进入游戏) 这是错误: 任何帮助将非常感激!:) 问题答案: 可能是竞标条件,在该竞标条件下find元素在页面上出现之前就已执行。看一下等待超时文档。这是文档中的示例

  • 我正在尝试单击 函数? 或者,我试图以为目标: 这只是给出了一个错误,即它不在当前视图中,很可能是因为< code>a在< code>div下面 错误: Web驱动程序中发生了类型为“OpenQA.硒.元素不可见异常”的未处理的异常.dll附加信息:元素当前不可见,因此可能无法与之交互 谢谢你的帮助。我认为我的第二个选择是最好的选择。有没有办法抵消一个< code>Click()?谢了。

  • 我已经写了下面的代码来选择单选按钮,它的工作很好,但今天它不工作了。请找到代码和相应的错误消息 代码1: 错误1:“线程”main“org.openqa.selenium.TimeoutException中出现异常:等待存在由:By.id:0_2485a_startdate定位的元素10秒后超时” 代码2: 错误2:“线程”main“org.openqa.selenium.TimeoutExcep

  • 我在我的类上收到三条错误消息,它说在、和上找不到符号。我该如何解决这个问题?我试图在对话框中打印出来,但这三个是唯一不起作用的。

  • 我收到这个错误:[错误]插件组织。阿帕奇。专家插件:maven surefire插件:2.12.4或其依赖项之一无法解析:找不到工件组织。阿帕奇。专家nexus xyz插件中的插件:maven surefire插件:jar:2.12.4 我试图运行maven与依赖:树,但我看不到surefire,我不知道为什么它正在寻找这个特定的版本2.12.4,这是没有指定在我的pom! 即使surefire插