我正在使用Selenium和Java编写测试,我对xpath感到困惑,例如:
不应该wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.
xpath("//span[not(text()='a')]")));
或//span[text()!='a']
为我带来文字不是'a'的所有范围吗?
答案 0 :(得分:0)
使用!=
运算符而非使用not()
有很大差异。
第一个仅在$node-set
不为空时检查$value
和$node-set
之间的不等式。
我们以下面的HTML摘录为例:
...
<div>
<span>a</span>
</div>
...
在这种情况下,//span[text()!='b']
将返回true
,就像//span[not(text()='b')]
一样。
但是,如果由于某种原因您想为div
标记应用相同的逻辑,//div[text()!='b']
将返回false
,因为甚至没有单个节点存在不等式, //div[not(text()='b')]
将返回true
。
作为底线(和个人推荐),您不应使用!=
运算符来检查节点集,而应使用not()
。