findelement不会抛出NoSuchElementException

时间:2016-10-13 13:58:26

标签: xpath selenium-webdriver java-7

我想编写一个测试来检查页面上是否存在具有指定文本的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部分。

1 个答案:

答案 0 :(得分:0)

试试这个(注意实际文本周围的单引号):

By.xpath("//*[@id='listRequests']//h4/a[contains(text(),'"+titelMetQuotes+"')]")

contains是一个带两个字符串的函数。因此,需要引用变量titelMetQuotes的文本。显然,在这种情况下,使用单引号更容易。

此外,变量名称(带引号的标题)非常具有误导性,因为它实际上没有针对代码中另一个缺陷的引号:

String titelMetQuotes = quote + titel +quote;
titelMetQuotes = "dierdieboeboe";

第二行只是用非引号字符串覆盖引用的标题。

最后,您不需要xpath表达式中的前导点,以便找到ID为listRequests的任何类型的第一个元素