WebDriver“无法定位元素”异常

时间:2012-08-22 11:21:24

标签: java selenium webdriver selenium-webdriver

运行以下代码时,我收到“无法定位元素”异常。我的预期输出为First Page of GoogleResults

public static void main(String[] args) {
    WebDriver driver;
    driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);

    WebElement oSearchField = driver.findElement(By.name("q"));
    oSearchField.sendKeys("Selenium");

    WebElement oButton = driver.findElement(By.name("btnG"));
    oButton.click();

    //String oNext = "//td[@class='b navend']/a[@id='pnnext']";
    WebElement oPrevious;
    oPrevious = driver.findElement(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));

    if (!oPrevious.isDisplayed()){
        System.out.println("First Page of GoogleResults");
    }
}

如果我运行上面的代码,我会得到“无法找到元素异常”。我知道上一个按钮元素不在Google搜索结果页面的第一页,但我想要取消异常并获得下一步if条件的输出。

1 个答案:

答案 0 :(得分:1)

逻辑错误 -

oPrevious = driver.findElement(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
如果WebDriver无法找到元素,

将失败或出错。

尝试使用像

这样的东西
public boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}

您可以将xpath传递给类似

的函数
boolean x = isElementPresent(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
if (!x){
    System.out.println("First Page of GoogleResults");
}