我是selendroid的新手并为我的应用编写测试用例。
我有一个登录页面,仅在用户未登录时显示。 我能够第一次执行测试并成功登录。 我已将noClearData标志设置为true,以便我可以获取进一步处理的数据。
由于我已经登录,所以当我第二次运行测试时主页被打开但是代码试图通过id“email”获取元素并抛出异常
org.openqa.selenium.NoSuchElementException: Element was not found.
io.selendroid.exceptions.NoSuchElementException: Element was not found.
at io.selendroid.server.handler.FindElement.handle(FindElement.java:58)
at io.selendroid.server.AndroidServlet.handleRequest(AndroidServlet.java:301)
at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:67)
at io.selendroid.server.http.ServerHandler.channelRead(ServerHandler.java:50)
.....
我正在检查元素是否显示在下面的代码
WebElement inputFieldEmail = driver.findElement(By.id("email"));
inputFieldEmail .isDisplayed()
但是driver.findElement抛出异常并且测试用例失败。 我想检查一下,如果登录页面打开,那么只执行上面的代码。
请帮忙。
由于
答案 0 :(得分:1)
编写测试时,你不能100%确定他们将从哪里开始,这可能是一个雷区。
如果您确实想这样做,可以使用try / catch包围您的findElement。
try {
WebElement inputFieldEmail = driver.findElement(By.id("email"));
} catch(org.openqa.selenium.NoSuchElementException e) {
// However you want to handle this
}
通过这种方式,您可以使用try来处理找到电子邮件字段的逻辑,以及何时找不到电子邮件。
或者,如果您正在使用JUnit或TestNG等测试框架,那么如果您只想在整个测试套件中登录一次,则可以使用@BeforeClass注释。
即。使用@BeforeClass注释方法登录,然后使用@Before或@After重置为每个测试用例开始或结束时应用程序中的已知点。