1

以下のコードの実行中に「要素が見つかりません」という例外が発生します。私の期待される出力は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条件の出力を取得したいと考えています。

4

1 に答える 1

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");
}
于 2012-08-22T11:42:45.053 に答える