【发布时间】:2017-12-20 01:07:08
【问题描述】:
我正在尝试验证此示例中的文本 Active:
<div class="details">
<p class="double">
<a href="url">Set as default</a>
<br>
<a id="modal124434" class="modalAction" href="#">Delete</a>
</p>
<span class="bold">TEXT</span>
: 1234567890 (12/2017)
<br>
Active:
<a class="game" href="#GAME">GAME</a>
</div>
我还需要检查TEXT 以确保它在那里。我使用以下找到TEXT:
foo = b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..')
当我print(foo.text) 时,我可以看到上面 html 示例中的所有文本。所以,我想我可以这样做:
b.find_element_by_xpath('//span[contains(text(),"TEXT")]/..[contains(text(),"Active:")]/a[text()="GAME"]
但我得到一个 NoSuchElement 异常。我也试过:
b.find_element_by_xpath('//*[contains(text(),"Active")]')
仍然一无所获。任何帮助将不胜感激。
【问题讨论】:
-
在此示例中,您要查找的文本位于两个元素之间。也许这里的答案会有所帮助:stackoverflow.com/questions/15813903/…
-
您要准确定位哪个
text? TEXT 或 Active: 或 GAME? -
是需要从节点获取子串
"Active:"还是需要通过子串"TEXT"和"Active:"定位元素? -
@debanjanbI 和@Andersson 希望尽可能在一个 xpath 中验证所有三个的文本。 @Tim 所以,一旦我找到了
text()[2],我怎么知道该元素中的文本是什么? -
所以事实证明,对于我正在做的事情,我实际上不需要验证
Active:文本,因为如果 @987654338 中包含GAME的<a>将不会出现@ 不存在。所以我可以使用'//span[contains(.,"TEXT")]/../a[text()="GAME"]'
标签: python selenium xpath text