Python Selenium找不到这样的元素。。。我迷路了

2024-06-16 09:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试单击一个元素,该元素会将我发送到下一页,但是,我似乎无法正确地找到它,甚至无法找到页面上的任何项目

元素的HTML代码

<a data-qa="menu-button" 
class="HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG" 
data-cv-test="headerSearchLink" 
href="/cars" 
target="_self">Search Cars
</a>

Visual of what I'm trying to click on

我的代码不起作用(我有正确的导入语句)

PATH = "my_path_to_chromedriver"
driver = webdriver.Chrome(PATH)
driver.get("https://www.carvana.com")
link = driver.find_element_by_class_name('HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG')
link.click()

我尝试过使用这种方法按类名进行搜索,只得到了这个错误消息

link = driver.find_element_by_class_name('HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG')
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 564, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/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":"css selector","selector":".HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG"}
(Session info: chrome=xx.x.xxxx.xxx)

我也尝试过使用CSS选择器进行搜索。我甚至做了一点理智检查,在网站上搜索了第一行html代码,出于某种原因,它给了我同样的错误。任何有帮助的。。。谢谢大家!


Tags: selfdriverseleniumelementfindclasswebdrivermenubutton
2条回答

问题是类名中有空格。类名函数对此不起作用,我建议尝试一下

driver.find_element_by_css_selector('.HeaderMenu__HeaderItemButton-kr6p0e-0.hbeYmr.MenuButton__MenuButtonWrapper-dq0g44-0.imLDTG')

driver.find_element_by_class_name('HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG')

此代码返回一个节点列表,但您无法单击它,您可以尝试获取第一个元素,因此代码如下:

driver.find_element_by_class_name('HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG')[0]

或者在导航器的控制台中使用js执行此操作,如下所示:

document.getElementByNames('HeaderMenu__HeaderItemButton-kr6p0e-0 hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0 imLDTG')[0]

相关问题 更多 >