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;
}
}
}
謝謝,但如果我有多個元素是什麼?例如我有用戶名和密碼和userbutton。我應該寫這樣的:if(!driver.findElements(password).isEmpty())then driver.findElement(By.id(「password」))。sendKeys(「123」); ?和用戶名相同? – user3409650
你可以像你所描述的那樣做,但它不是明確的方式。使用Html元素庫。您可以將您的登錄表單描述爲一個對象,並可以輕鬆使用它。看看github鏈接上的例子。代碼將看起來像loginForm.password.type(「登錄」)。 –
另外我很感興趣,爲什麼你的期望元素不出現?也許你應該等待他們的外表。如果找不到元素,這是跳過操作的不好方法。您的登錄字段可能會消失,但在這種情況下您的測試會通過。 –