selenium /Python:无此类元素:驱动程序. find_element(按. ID)

8zzbczxx  于 2023-02-12  发布在  Python
关注(0)|答案(2)|浏览(213)

我试图在网站上找到元素,这些元素的形式是然后发送密钥登录,但我得到了一个错误,见下文:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="username"]"}

代码行为:

driver.find_element(By.ID, "username").send_keys("test123")

有关HTML代码,请参见:
HTML code
我使用最新版本的Python/Selenium和PyCharm。
希望有人能帮上忙。

yhxst69z

yhxst69z1#

我在那一行代码中没有发现任何错误。请尝试以下操作之一

*尝试应用隐式等待,如下所示:

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(20)

*检查是否有框架/ iframe覆盖此元素,如果有,请在查找元素之前尝试以下代码

iframe = driver.find_element_by_xpath("<XPath expression of the frame>")
driver.switch_to.frame(iframe)

要切换回主DOM:
driver.switch_to.default_content()

*如果帧不存在,则尝试按如下方式引入显式等待:

element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "username"))

您将需要以下导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
8mmmxcuj

8mmmxcuj2#

给定HTML:

元素是<input>元素,其将使用send_keys()方法接受文本输入。
溶液
理想情况下,要将 * 字符序列 * 发送到<input>元素,需要为element_to_be_clickable()引入WebDriverWait,并且可以使用以下locator strategies之一:

  • 使用 * CSS选择器 *:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.input#username[name='username']"))).send_keys("Coding_89")
  • 使用 * XPATH *:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='input' and @id='username'][@name='username']"))).send_keys("Coding_89")
      • 注意**:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

相关问题