【发布时间】:2021-09-02 16:08:40
【问题描述】:
我正在尝试单击应该将我转到下一页的元素,但是,我似乎无法正确找到它,甚至找不到页面上的任何项目。
元素的 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 代码,出于某种原因,它给了我同样的错误。有什么帮助...谢谢!
【问题讨论】:
-
当类属性中有空格时,表示有多个。采用 。像这样的操作符: link = driver.find_element_by_class_name('.HeaderMenu__HeaderItemButton-kr6p0e-0.hbeYmr MenuButton__MenuButtonWrapper-dq0g44-0.imLDTG') (用“.”替换空格)也可以将“data-qa”属性定位为 xpath // a[@data-qa="menu-button"] w3schools.com/cssref/sel_class.asp
-
您是否检查了您尝试访问的元素是否在框架内?
-
@pcalkins xpath 目标 data-cv-test 有效。感谢您的建议。但是,类名搜索仍然给了我同样的错误。从这里开始,我将只使用 xpath。
-
只是让你知道,你用来识别元素的类名返回 3 个元素。所以一定要确保写一个唯一的定位器
-
谢谢,您使用哪一行代码来访问这些元素。出于某种原因,我的任何人都没有使用该类名。 @itronic1990
标签: python selenium webdriver selenium-chromedriver classname