2014-06-11 160 views
0

我已經從java的格式導出了Selenium IDE的測試用例。問題是,當我想運行它時出現「找不到元素」的錯誤,我想在我的java文件中修復它。我添加了斷言,但添加了所有錯誤的嘗試和捕獲,所以當我添加一個無關的元素時,我沒有在我的頁面上通過測試。我想用isElementPresent函數代替try和catch。任何想法如何使用它並修復這個錯誤?謝謝!在硒測試中找不到元素

public void testUser() { 
     try { 
      driver.findElement(By.linkText("users")).click(); 
      driver.findElement(By.id("createNewButton")).click(); 
      driver.findElement(By.id("name")).clear(); 
         driver.findElement(By.id("username")).sendKeys("USER1"); 
      driver.findElement(By.id("password")).clear(); 
      driver.findElement(By.id("password")).sendKeys("123"); 
      driver.findElement(By.id("addUserButton")).click(); 
      driver.findElement(
        By.xpath("(//a[contains(text(),'Delete user')])[3]")) 
        .click(); 
      driver.findElement(
     } catch (NoSuchElementException ex) { 
     } 
    } 

    private boolean isElementPresent(By by) { 
     try { 
      driver.findElement(by); 
      return true; 
     } catch (NoSuchElementException e) { 
      return false; 
     } 
    } 
} 

回答

0

試試這個

!driver.findElements(locator).isEmpty() 

但在這種情況下,最好使用Html Elements庫代碼清晰。

例如

WebElementMatchers.exists([yourElement]) 
+0

謝謝,但如果我有多個元素是什麼?例如我有用戶名和密碼和userbutton。我應該寫這樣的:if(!driver.findElements(password).isEmpty())then driver.findElement(By.id(「password」))。sendKeys(「123」); ?和用戶名相同? – user3409650

+0

你可以像你所描述的那樣做,但它不是明確的方式。使用Html元素庫。您可以將您的登錄表單描述爲一個對象,並可以輕鬆使用它。看看github鏈接上的例子。代碼將看起來像loginForm.password.type(「登錄」)。 –

+0

另外我很感興趣,爲什麼你的期望元素不出現?也許你應該等待他們的外表。如果找不到元素,這是跳過操作的不好方法。您的登錄字段可能會消失,但在這種情況下您的測試會通過。 –