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(“登录”)。 –
另外我很感兴趣,为什么你的期望元素不出现?也许你应该等待他们的外表。如果找不到元素,这是跳过操作的不好方法。您的登录字段可能会消失,但在这种情况下您的测试会通过。 –