Selenium 顺序谓词和组合谓词的区别
在Selenium中,我编写了一个Selenium 顺序谓词和组合谓词的区别,selenium,xpath,Selenium,Xpath,在Selenium中,我编写了一个xpath,它们都检索相同的结果 //a[@role='tab'][text()=' Assets'] //a[@role='tab' and text()=' Assets'] 这两个词的意思相同吗 第一个是谓词,这意味着它检查a[@role='tab']是否为true,然后进入[text()='Assets'] 第二个是一个只使用和运算符的函数,因此它会验证这两个运算符都是真的。在XPath中添加方括号([])时,就是在添加一个条件,所以 第一行添加2个条
xpath
,它们都检索相同的结果
//a[@role='tab'][text()=' Assets']
//a[@role='tab' and text()=' Assets']
这两个词的意思相同吗 第一个是谓词,这意味着它检查
a[@role='tab']
是否为true,然后进入[text()='Assets']
第二个是一个只使用
和运算符的函数,因此它会验证这两个运算符都是真的。在XPath中添加方括号([])时,就是在添加一个条件,所以
第一行添加2个条件
与使用和
通常不使用第一行,因为它可读性较差
主要是因为这种语法在其他语言中表示
见:
5带有谓词的XPath
谓词是可以为真或假的表达式
它将在[…]内附加到给定的位置路径,并将优化结果
可以将多个谓词追加到位置路径及其(!)内
在大多数情况下,a[b][c]
的效果与a[b和c]
完全相同。有两个例外情况需要注意:
- 如果其中一个谓词是数字的,或者依赖于
position()
或last()
(我称这些位置谓词),那么它们就不等价。例如,a[@x][1]
选择具有@x
属性的第一个a
元素,而a[1][@x]
选择具有@x
属性的第一个a
元素(并且不选择其他属性)。相比之下,a[1和@x]
将整数1转换为布尔值true()
,因此它只表示a[@x]
- 如果对
b
或c
的评估失败并出现动态错误,则行为可能会有所不同。这里的精确规则取决于您使用的XPath版本,老实说,这些规则给实现留下了一些余地,但是如果您想确保在b
为false的情况下,c
不会被计算,则需要小心。(这在XPath 1.0中并不重要,因为很少有表达式抛出动态错误。)
如果你在阅读XPath时认为符号的含义与你在过去遇到的其他语言中的含义相同,那么你就让自己的生活变得非常困难。@MichaelKay没有说这不会发生,特别是如果在java代码中使用XPath,谢谢你的回答,所以简化:不要将数字与和一起使用,因为这样会ignored@user7294900,如果要将节点索引与其他谓词一起使用,请将其用作[position()=1和@x]
,但不要将其用作[1和@x]
@use7294900否它不会被忽略,它将被转换为布尔值。0=错误,其他一切=正确。
// return a random m-by-n matrix with values between 0 and 1
public static double[][] random(int m, int n) {