相关疑难解决方法(0)

XPath:点和文本之间的区别()

我的问题是关于使用dot和text()in的具体细节XPath.例如,以下find_element行返回相同的元素:

driver.get('http://stackoverflow.com/')

driver.find_element_by_xpath('//a[text()="Ask Question"]')
driver.find_element_by_xpath('//a[.="Ask Question"]')
Run Code Online (Sandbox Code Playgroud)

那么区别是什么呢?使用.和有text()什么好处和缺点?

selenium xpath

51
推荐指数
2
解决办法
7万
查看次数

在XPath中测试text()节点与字符串值

我有一个节点如下:

<span class="portal-text-medium">Office Hours</span>
Run Code Online (Sandbox Code Playgroud)

对于我使用的XPath

//span[text()='Office Hours']
Run Code Online (Sandbox Code Playgroud)

这应该工作,但它永远不会.我可以使用*contains(text(),'Office Hours')]*但是找不到完全匹配,我必须验证没有"*".这不是它唯一不适合我的时间.我之前看到它有用,所以我不知道出了什么问题.任何的想法?

是的,我可以,并且确实使用,starts-with但它并不完全相同.

html xml xpath

8
推荐指数
1
解决办法
6044
查看次数

为什么XPath不洁净?为什么谓词中不需要text()?

假设我有:

<A>
  <B>C</B>
  <D>E</D>
</A>
Run Code Online (Sandbox Code Playgroud)

然后我可以输出B元素(包括标签):

//B
Run Code Online (Sandbox Code Playgroud)

哪个会回归

<B>C</B>
Run Code Online (Sandbox Code Playgroud)

但是为什么谓词中不需要text()? 以下两行给出相同的输出:

/A[B = 'C']/D
/A[B/text() = 'C']/D
Run Code Online (Sandbox Code Playgroud)

如果XPATH是干净的构造我会期望它(或在某种其他元素结构):

/A[B = <B>C></B>]/D
Run Code Online (Sandbox Code Playgroud)

和:

/A[B/text()='C']/D
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个理由,为什么输出需要text(),但谓词不需要它?

xml xpath

3
推荐指数
1
解决办法
1040
查看次数

标签 统计

xpath ×3

xml ×2

html ×1

selenium ×1