2012-08-22 73 views
1

運行下面的代碼時出現「無法定位元素」異常。我的預期產出是First Page of GoogleResults使用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); 

    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條件的輸出。

+0

retaging即使我把Java作爲最後一個選項爲什麼它作爲第一次降臨之後。因此,頁面標題會變得混亂。可能會引起誤解。有什麼想法嗎? –

回答

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

好東西,記得在import中導入org.openqa.selenium.NoSuchElementException而不是java.util.NoSuchElementException(正如我的IDE最初所做的那樣)。 – 2016-11-21 11:43:51

相關問題