对于以下代码行:
driver.find_element(By.CLASS_NAME,'list-card-heading')
我收到以下错误:
NoSuchElementException Traceback (most recent call last)
Input In [23], in <cell line: 1>()
1 driver.find_element(By.CLASS_NAME,'list-card-heading')
最初我有:
driver.find_element_by_class_name('list-card-heading')
但在代码中做了一些修改,在下面两行中添加了以下内容:
from selenium.webdriver.common.by import By
driver.find_element(By.CLASS_NAME,'list-card-heading')
我预期会得到以下结果:
<selenium.webdriver.remote.webelement.WebElement (session="945ae2a8da0536bea44330c4bbf0b24e", element="581cbcf9-7bb9-40dd-8601-4109cad55272")
但得到了这个错误:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".list-card-heading"}
是驱动程序问题还是selenium库问题。
2条答案
按热度按时间doinxwow1#
这行代码:
在selenium3中,等效于:
使用selenium4
可能AUT(Application Under Test)已更改或者是动态元素,这就是您看到错误的原因。
此用例
要识别***visible***元素,理想情况下需要为visibility_of_element_located()引入WebDriverWait,并且可以使用以下locator strategies之一:
abithluo2#
当webdriver找不到使用给定定位器策略的元素时,将抛出
NoSuchElementException
。虽然有时候这是因为一个合法的坏xpath,在我的经验,这往往是因为一个dom定时问题,这可能是由各种各样的事情,无论是在您的代码,或在网站的事情。
溶液
我建议使用
WebDriverWait
来确保一个元素在尝试与之交互之前存在。下面是一个可能的示例: