在使用 Selenium 的某些元素之后通过 CSS 选择器查找元素
Posted
技术标签:
【中文标题】在使用 Selenium 的某些元素之后通过 CSS 选择器查找元素【英文标题】:Find element by CSS selector AFTER certain element with Selenium 【发布时间】:2021-11-17 01:31:26 【问题描述】:我正在寻找文本“Interesting”,这是 b
类在 h1.important
之后的第一次出现。
我将如何在 Selenium 中做到这一点?
<div class="a">
<div class="b">Not interesting</div>
</div>
<div class="title">
<h1 class="important">Title</h1>
</div>
<div class="a">
<div class="b">Interesting</div>
</div>
有没有办法使用花哨的选择器或 xpath 找到“有趣的”?
这也将匹配第一个元素:driver.find_elements_by_css_selector(".b").text
【问题讨论】:
【参考方案1】:driver.find_elements_by_css_selector(".b")
这将在 Python-Selenium 绑定中返回list
。所以你不能在上面做.text
。
改为尝试使用driver.find_element
,如下所示:
driver.find_element_by_css_selector("div.title+div>.b").text
如果你想使用 xpath,试试这个:
driver.find_element_by_xpath("//div[@class='title']/following-sibling::div/div").text
请注意,在 Selenium 自动化中,CSS_SELECTOR
优于 xpath
。
【讨论】:
【参考方案2】:这个 XPath
//h1[@class='important']/../following-sibling::*//*[@class='b']
应该在您询问时在 h1.important
节点之后给您下一个 b
类出现
【讨论】:
【参考方案3】:这个 xpath 应该可以工作
(//h1[@class="important"]/following::*[@class='b'])[1]
【讨论】:
以上是关于在使用 Selenium 的某些元素之后通过 CSS 选择器查找元素的主要内容,如果未能解决你的问题,请参考以下文章