2016-08-18 64 views
1

我使用的是Selenium Webdriver,我想在每一步之後打印一些消息,這樣我就能夠在成功時打印一些消息,但是在收到「無法定位元素」的故障時。請參閱我的代碼:如何在Selenium webdriver中將「無法定位元素」更改爲另一條消息,如「元素不存在」?

WebElement a= driver.findElement(By.xpath(".//*[@id='eviceSliderbuttonPrev']/a")); 

    if(a.isDisplayed()) 
    { 
     System.out.println("Device Slider button exists"); 

     a.click(); 

     System.out.println("Button is clickable"); 
    } 
    else { 
     System.out.println("Device Slider button doesn't exist!"); 

但其他條件不打印出來,當案件失敗,我得到「無法定位元素」。

你知道如何解決這個問題嗎?

回答

1

實際上findElement要麼返回元素要麼拋出NoSuchElementException,所以if(a.isDisplayed())條件只有在找到元素時纔會遇到。

如果你想檢查元素的存在,我建議嘗試使用findElements代替,檢查列表的大小,因爲findElements總是返回要麼是空列表或WebElement名單。

你應該嘗試如下: -

List<WebElement> a= driver.findElements(By.xpath(".//*[@id='eviceSliderbuttonPrev']/a")); 

if(a.size() > 0 && a.get(0).isDisplayed()) 
{ 
    System.out.println("Device Slider button exists"); 
    a.get(0).click(); 
    System.out.println("Button is clickable"); 
}else { 
    System.out.println("Device Slider button doesn't exist!"); 
} 
+1

謝謝!這回答了我的問題..我是一個初學者和名單是什麼對我而言是... 非常感謝你! – Zomzomzom

+1

你救了我的一週不僅我的一天:D謝謝你! – Zomzomzom

+0

@Zomzomzom沒問題。很高興幫助你..快樂學習... :) –

0

使用嘗試捕捉:

try { 
    if(a.isDisplayed()) { 
     System.out.println("Device Slider button exists"); 
     a.click(); 
    } 
} catch(Exception e) { 
    System.out.println("Device Slider button doesn't exist!"); 
} 

你可以採取if條件,如果你想在上面的,但是這取決於你。該例外仍然在控制檯中拋出,但是在這種情況下您正在控制它。

2

而不是isDisplayed()拋出一個NoSuchElementException而不是返回false,當元素不顯示,您可以使用driver.findElements(...),它將返回一個列表。只需檢查列表的大小爲0或1而不是處理異常。

0

請注意,這個答案是一種替代方法來使用driver.findElements()方法。正如Moser在他的回答中所建議的那樣,您可以使用try-catch。 但是,如果該元素不存在或未找到,並且程序將自行終止而不到達「try」塊,則driver.findElement()方法將拋出NoSuchElementException。

因此,我們必須將driver.findElement()方法本身放在'try'塊中。

try { 
    WebElement a= driver.findElement(By.xpath(".//*[@id='eviceSliderbuttonPrev']/a")); 
    // If above line throws NoSuchElementException, rest of the try block below will be skipped and you can print your desired message. 
    if (a != null) { // Element was present and found. 
     if(a.isDisplayed()) { 
      System.out.println("Device Slider button exists"); 
      a.click(); 
      System.out.println("Button is clickable"); 
     } 
    } 
} 
catch (org.openqa.selenium.NoSuchElementException) { 
    System.out.println("Device Slider button doesn't exist!"); 
} 
相關問題