Appium中的意外行为

时间:2014-04-08 11:40:59

标签: selenium testng appium

我是appium的新手。我正在运行以下IOS测试

@Test
public void Login() throws InterruptedException{
Thread.sleep(3000);
driver.findElement(By.xpath("//window[1]/textfield[9]")).sendKeys("john");
driver.findElement(By.xpath("//window[1]/secure[1]")).sendKeys("asdf1234");
driver.findElement(By.name("btn checkbox")).click();

driver.findElement(By.name("Login")).click();

Thread.sleep(6000);

这里它工作正常,它登录,但当我评论driver.findElement(By.name("btn checkbox")).click();这一行它没有登录,但显示测试通过,没有单一的例外
请有人告诉我这里有什么问题吗?

2 个答案:

答案 0 :(得分:2)

您的测试似乎没有检查它是否已登录。您正在执行操作以使其登录,但您实际上并未验证任何内容。你正在抽烟测试。

你想在这里做什么......

  • 构建一些东西,让您检查已完成登录过程的任何指示器。 (如欢迎标签!)

  • 使用an explicit wait执行此操作

  • 定义您的成功标准。登录通常需要10秒钟。我们的成功标准可能不到25秒。

  • 如果在抛出异常(TimeoutException)后25秒内没有找到该元素,则应该返回类似" None"之类的东西,否则返回元素

应该是这样的:

WebElement welcomeLabel = (new WebDriverWait(driver, 25)) .until(ExpectedConditions.presenceOfElementLocated(By.name("welcomeLabel")));

然后你会说出这样的话: Assert.assertIsNotNone(welcomeLabel) 这个断言使得这不是冒烟测试

答案 1 :(得分:1)

当然发生了这种情况。你唯一要做的就是点击那个按钮。 Appium正是这样做的,没有遇到任何问题,并且返回了一个'测试通过'。

您必须自己编写某种测试,以了解您是否已登录。

例如,通过在下一页搜索注销按钮。

示例:

Assert.assertTrue(wd.findElement(By.name("Logout")).isDisplayed());