在使用 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 选择器查找元素的主要内容,如果未能解决你的问题,请参考以下文章

使用Selenium Automation完全无法看到网页

被误读的xpath

使用Selenium对网页元素进行定位的诸种方法

selenium-三种等待方式总结

[Selenium] 针对下拉菜单出现之后又立马消失的问题,通过Javascript改变元素的可见属性

无法通过 Selenium Python 在可折叠窗口中找到段落文本元素