感谢您让我在这里提出问题。我是 Selenium 和 XPath 的新手,只是想使用 Python 抓取一个不太简单的网站。
我的问题是:
具体问题:我有一个如下所示的HTML文件,想要提取'data-testid =“qs-select-make”'元素(最后,我想使用selenium来更新下拉菜单)
在我的一生中,我无法让它发挥作用......
<div class = "a">
<div class = "ab">
<div class = "abc">
<div class = "abcd">
<select class="tya6p HaBLt A4yQa q0MnL" placeholder="Any" data-testid="qs-select-
make"><option selected="" value="">Any</option>
使用谷歌浏览器网络开发人员我已经找到了“正确的”(尽管不是很好的路径)似乎是
[@id="root"]/div/div/article[1]/section/div/div[2]/div[1]/div[1]/div/select
仍然,以下代码尝试将品牌“Audi”插入下拉菜单,但失败并出现无效选择器异常:
make_string = "//select[//*
[@id='root"]/div/div/article[1]/section/div/div[2]/div[1]/div[1]/div/select]option
selected[text()='{}']".format("Audi")
driver.find_element("xpath", make_string).click() #use selenium to click the button
有谁知道我做错了什么,以及更好的方法吗?
关于问题2,资源。到目前为止我用过:
使用下面的
xpath
来识别元素。请同时添加syncronisation
时间。
driver.find_element("xpath", "//select[@data-testid='qs-select-make']//option[text()='{}']".format("Audi")).click()
您的 XPath 表达式存在语法错误,使其成为无效选择器。要选择带有 data-testid="qs-select-make" 的 select 元素,您可以使用更干净、更直接的 XPath 表达式。正确的做法是这样的:
make_selector = "//select[@data-testid='qs-select-make']"
driver.find_element_by_xpath(make_selector).click()
option_xpath = f"{make_selector}/option[text()='Audi']"
driver.find_element_by_xpath(option_xpath).click()
此代码首先通过其 data-testid 属性选择下拉列表,然后单击它展开选项,最后从展开的下拉列表中选择“Audi”选项。