我想编写一个测试来检查页面上是否存在具有指定文本的webelement。这是执行该任务的方法的代码:
public boolean checkOfAanvraagIsOpgevoerd (String titel)
{
String quote = "\"";
String titelMetQuotes = quote + titel +quote;
titelMetQuotes = "dierdieboeboe";
boolean isOpgevoerd=false;
try {
driver.findElement(By.xpath(".//*[@id='listRequests']//h4/a[contains(text(),"+titelMetQuotes+")]"));
isOpgevoerd=true;
} catch (NoSuchElementException NE) {
NE.printStackTrace();
}
return isOpgevoerd;
}
虽然我绝对相信页面上没有标签,但却包含文字" dierdieboeboe"仍然会跳过catch块。当我在xpath表达式中替换h5中的h4时,会按预期抛出NoSuchElementException。似乎忽略了表达式中的contains部分。
答案 0 :(得分:0)
试试这个(注意实际文本周围的单引号):
By.xpath("//*[@id='listRequests']//h4/a[contains(text(),'"+titelMetQuotes+"')]")
contains是一个带两个字符串的函数。因此,需要引用变量titelMetQuotes
的文本。显然,在这种情况下,使用单引号更容易。
此外,变量名称(带引号的标题)非常具有误导性,因为它实际上没有针对代码中另一个缺陷的引号:
String titelMetQuotes = quote + titel +quote;
titelMetQuotes = "dierdieboeboe";
第二行只是用非引号字符串覆盖引用的标题。
最后,您不需要xpath表达式中的前导点,以便找到ID为listRequests
的任何类型的第一个元素