当前位置: 首页 > 知识库问答 >
问题:

WebDriver出现“无法定位元素”异常

萧心水
2023-03-14

我在运行下面的代码时遇到“无法定位元素”异常。我的预期输出是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");
    }
}

如果我运行上面的代码,我会得到“无法定位元素异常”。我知道前面的Button元素不在Google搜索结果页面的第一页中,但是我想要抑制异常并获得下一步if条件的输出。

共有1个答案

钱建本
2023-03-14

逻辑错误-

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");
}
 类似资料:
  • 我正在尝试采取一些分数从网站,而使用WebDriver。到目前为止我尝试了XPath,CSS,Classname,但是,有时它定位项目,有时它不定位。 这是我一直试图带它的HTML代码: 这是我的代码(到目前为止我已经尝试过了): 其他版本: 并且我也尝试了子类(在score classes下),但结果是一样的,有时可以定位元素,有时不能。 有什么建议吗? 更新:在我的代码中,我放了一些或仍然不能

  • 我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。

  • 我正在使用Selenium导航一个网页,该网页有一个名为“mail”的链接,使用WebDriver(最近刚从RC切换到WebDriver)。我想单击该链接,但testcase总是失败,出现错误: 我可以看到元素出现在屏幕上,但测试用例仍然失败。 有没有人知道我在这里可能缺少什么或者找到链接元素的替代方法?

  • 我对selenium WebDriver非常陌生,我试图自动化一个页面,它有一个名为“删除日志文件”的按钮。使用FireBug我了解到,HTML被描述为 css选择器也使用firepath定义为“#DeletelogButton” 请帮助我解决这个问题。

  • 我对简单点击按钮有问题。它的按钮是CSS。 我想执行点击操作,我使用以下代码: 我得到错误: 为什么我会犯这个错误?它应该工作得很好。此按钮位于Web的底部。也许我应该向下滚动一页?

  • 问题内容: 等待和一起出现很方便。 问题是, 如果 找到元素的唯一可能方法 是 什么,因为它没有id,没有名称,没有唯一的类? 的构造函数仅接受作为参数,而不接受。 我已经设定了时间,所以使用它似乎不是一个好主意,因为我不想为这个元素等待那么长时间。 这是场景: 有一个网页,其中包含许多标签。每个标签都有格式要求。 当不满足格式要求时,动态标签将出现在该标签之后。 由于标签太多,因此我创建了一个通