如何检查selendroid

时间:2016-05-25 09:42:31

标签: android selendroid

我是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抛出异常并且测试用例失败。 我想检查一下,如果登录页面打开,那么只执行上面的代码。

请帮忙。

由于

1 个答案:

答案 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重置为每个测试用例开始或结束时应用程序中的已知点。