首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebDriver出现"Unable to locate element“异常

WebDriver出现"Unable to locate element“异常
EN

Stack Overflow用户
提问于 2012-08-22 19:21:24
回答 1查看 5.7K关注 0票数 1

在运行下面的代码时,我得到了一个“找不到元素”的异常。我的预期输出是First Page of GoogleResults

代码语言:javascript
复制
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");
    }
}

如果我运行上面的代码,我会得到"Unable to Locate Element Exception“。我知道前一个按钮元素不在谷歌搜索结果页面的第一页,但我想抑制异常,并获得下一步if条件的输出。

EN

回答 1

Stack Overflow用户

发布于 2012-08-22 19:42:45

逻辑错误-

代码语言:javascript
复制
oPrevious = driver.findElement(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));

如果WebDriver找不到元素,将失败或给出错误。

试着用这样的东西-

代码语言:javascript
复制
public boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}

可以将xpath传递给如下所示的函数

代码语言:javascript
复制
boolean x = isElementPresent(By.xpath("//td[@class='b navend']/a[@id='pnprev']"));
if (!x){
    System.out.println("First Page of GoogleResults");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12071977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档