使用Appium测试多个活动

时间:2016-01-04 08:54:03

标签: android appium

我的应用包含多项活动。流程是:

SplashScreen - >活动1 - >活动2 - >活动3 - > ?

活动1有一个通向活动2的按钮。

活动2有一个editText(必须填写),然后是一个导致活动3的按钮。

活动3包含指向应用程序其余部分的按钮

我的代码目前的作用是:

    //Define WebDriver
    dr = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
    dr.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

    //Activity 1
    dr.findElement(By.id("com.package.name:id/btnLoginWithEmail")).click();

    //Activity2
    dr.findElement(By.id("com.package.name:id/emailField")).clear();
    dr.findElement(By.id("com.package.name:id/emailField")).sendKeys("user@domain.com");
    dr.findElement(By.id("com.package.name:id/btnVerifyEmail")).click();

据我了解,Appium将始终尝试在当前运行活动中找到该元素,即使它是SplashScreen。如果失败,它会一次又一次地尝试。我的问题是:

  1. 如何检测当前的运行活动?
  2. 如何考虑当前的活动?如果在当前上下文中不存在元素,我认为Appium试图找到元素没有意义。
  3. 基本上,我要问的问题是:如果有多个活动,测试某个应用流量的正确方法是什么?

    我试图找到示例代码,但我找不到这个特定情况。

2 个答案:

答案 0 :(得分:1)

嗯,第一个问题的答案是使用driver.currentActivity()

我们永远不应该为应用程序的当前活动而烦恼。更好的编写代码,只需检查元素在当前上下文中是否可用。 好的,如果您的要求是首先验证活动,然后查找元素,然后使用String currentActivity=driver.currentActivity()

答案 1 :(得分:0)

您应该以与真实用户与您的应用程序交互相同的方式编写测试用例。在模拟期间,如果需要滚动,则使用Appium滚动功能来获取活动的确切元素。