2013-05-07 112 views
2

Boolean變量的定義中的webdriver作爲後盾:布爾變量中的webdriver

boolean r1 = selenium.isTextPresent("something"); 

while循環使用這一點。我想將我的代碼,代碼的webdriver和我想:

boolean jr1 = driver.findElement(By.linkText("something")) != null; 

但它只能在文字存在和價值是true。當值應爲false我的變量返回我收到的控制檯錯誤:

Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"link text","selector":"something"} 

你能給我什麼建議,我怎麼能做到這一點?

回答

2

我通過編寫返回true或false的isElementPresent方法來解決這個問題。 編輯 - 剛剛在另一個答案中看到了這個確切的方法,我不再相信我寫了它。顯然,我發現它很久以前,並已使用它很長時間,感覺就像我的!所有信用卡原作者

​​

然後,您可以使用:

boolean jr1 = isElementPresent(By.linkText("Something")); 

添加這種方法的基類,並從其擴展您的測試類,或將其添加到您的每個測試類。

0

如果元素沒有linktext'something'Webdriver總會返回異常,我很害怕。

您是否嘗試了預期條件?

try { 
     wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("something") 
     Boolean jr1 = True 
    } 
catch (Exception e) { 
     Boolen jr1 = False 
    } 

這是一個相當粗糙實現,但在這種情況下,我將盡力找到元素,如果它發現它,真。如果請求超時,False。

0

對我來說最直接的實現isTextPresent作爲webdriver的代碼如下:

public boolean isTextPresent(String text) { 
    String allText = webDriver.findElement(By.tagName("body")).getText(); 
    boolean isTextPresent = allText.contains(text); 
    return isTextPresent; 
} 
0

我身邊這讓使用以下方法:

  1. 起初我設定布爾味精的值不顯示爲假
  2. 等待50秒,直到元素可點擊
  3. 如果表格中的文本等於顯示的文本即no記錄然後返回true
  4. 否則返回false

    公共布爾isRecordDisplayed(字符串sDisplayText){ 布爾isNoRecordDisplayedMsg = FALSE; (WebDriverWait(webDriver,50).until(ExpectedConditions.elementToBeClickable(table)));

     if (search.getText().equals(sDisplayText)) { 
          isNoRecordDisplayedMsg = true; 
         } 
         return isRecordHostDisplayedMsg; 
        } 
    

    By table = By.xpath(「// div [contains(@ class,'record')] // th」);