首页 > 解决方案 > 硒自动登录失败没有这样的元素:无法找到元素

问题描述

我们有网站(www.example.com),它将重定向到 auth.exmaple.com 进行身份验证。我试过以下代码。但由于无法正确定位用户名/密码,它不起作用。

from selenium import webdriver
from getpass import getpass
from time import sleep

username = input("Enter in your username: ")
password = getpass("Enter your password: ")

driver = webdriver.Chrome()
driver.get("https://www.example.com")

username_textbox = driver.find_element_by_name("username")
username_textbox.send_keys(username)

password_textbox = driver.find_element_by_name("password")
password_textbox.send_keys(password)

login_button = driver.find_element_by_name("submit")
login_button.submit()

**Error:**
   username_textbox = driver.find_element_by_name("username")
  File "/Users/sababathy_c/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/Users/sababathy_c/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "/Users/sababathy_c/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/sababathy_c/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"username"}
  (Session info: chrome=93.0.4577.82)
  (Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.16.0 x86_64)

User Name

<input type="text" name="username" class="auth0-lock-input" placeholder="username/email" autocomplete="off"

Password
<input type="password" name="password" class="auth0-lock-input" autocomplete="off" autocapitalize="off"

Submit
<button class="auth0-lock-submit" name="submit" type="submit" aria-label="Log In" style="background-color:

附上 HTML 参数详情

标签: pythonseleniumselenium-webdriverweb-scraping

解决方案


如果没有涉及框架或 iframe,则可能是元素未正确呈现。请尝试显式等待:

代替

username_textbox = driver.find_element_by_name("username")
username_textbox.send_keys(username)

尝试这个 :

username_textbox = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "username")))
username_textbox.send_keys(username)

PS:如果我们有唯一的条目,请检查dev tools(谷歌浏览器)。HTML DOM

检查步骤:

Press F12 in Chrome-> 转到element部分 -> 执行CTRL + F-> 然后粘贴//*[@name='username']xpath 并查看,如果您想要element的是否使用匹配节点突出显示。1/1


推荐阅读