给出此html示例:
<div class="measure-tab"> --- i want to select this one
<span class="color_title">someText</span>
</div>
<div class="measure-tab"> --- i dont want to select this one
<span class="color_title">someText</span>
<div>
<span class="qwery">jokerText</span>
</div>
</div>
<div class="measure-tab"> --- i want to select this one
<span class="color_title">someText</span>
</div>
我要选择具有@ class ='measure-tab'的div,该div下具有一个跨度,该跨度作为特定类和text = someText,以及一个具有特定类且不包含text ='的嵌套跨度jokerText”,所有这些都在XPATH中
我尝试过的是:
//div[contains(@class, 'measure-tab') and //span[@class="color_title" and (contains(text(),'someText')) and //span[@class="color_title" and not(contains(text(),'jokerText'))]]
但是这似乎没有用。 我还以This帖子为灵感。
编辑:更正了对该问题的目标的错误描述
编辑,提出了新的解决方案:
//div[contains(@class, 'measure-tab') and //span[contains(@class, 'color_title') and //span[not(contains(@class, 'qwery'))]]]
但是这将返回所有div,而不是不与---我不希望选择它
<span class="color_title">someText</span>
<div>
<span class="qwery">jokerText</span>
</div>
我感觉很近,但到目前为止,哈哈,对我来说没有意义,为什么当我写的不包含<span class="qwery">jokerText</span>
时将它与'g-recaptcha-response{Long string}
匹配
答案 0 :(得分:0)
我相信这就是您要寻找的东西-
MyDivs = driver.find_elements_by_xpath("//div[@class='measure-tab' and not(descendant::*[text() = 'jokerText' and @class = 'qwery'])]")
这将选择所有没有div
的{{1}}标签。
答案 1 :(得分:0)
您可以使用 not(following-sibling::div/span.....)
尝试使用以下xpath:
//span[@class='color_title' and not(following-sibling::div/span[@class='qwery' and text()='jokerText'])]/parent::div[@class='measure-tab']