Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;无法定位元素“0”;WebDriver异常_Java_Selenium_Webdriver_Selenium Webdriver - Fatal编程技术网

Java &引用;无法定位元素“0”;WebDriver异常

Java &引用;无法定位元素“0”;WebDriver异常,java,selenium,webdriver,selenium-webdriver,Java,Selenium,Webdriver,Selenium Webdriver,运行下面的代码时,我遇到“无法定位元素”异常。我的预期输出是谷歌搜索结果的第一页 public static void main(String[] args) { WebDriver driver; driver = new FirefoxDriver(); driver.get("http://www.google.com"); driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);

运行下面的代码时,我遇到“无法定位元素”异常。我的预期输出是谷歌搜索结果的第一页

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
条件。

逻辑错误-

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");
}
逻辑错误-

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");
}

即使我保留java作为最后一个选项,在重新设置之后,为什么它会作为第一个选项出现。而页面标题也因此变得一团糟。这可能会产生误导。有什么想法吗?即使我保留java作为最后一个选项,但在重新选择之后,为什么它会作为第一个选项出现呢。而页面标题也因此变得一团糟。这可能会产生误导。有什么想法吗?好东西,记住导入org.openqa.selenium.NoSuchElementException而不是java.util.NoSuchElementException(就像我的IDE最初做的那样)。好东西,记住导入org.openqa.selenium.NoSuchElementException而不是java.util.NoSuchElementException(就像我的IDE最初做的那样)。