【问题标题】:Using Appium to test multiple activities使用 Appium 测试多个活动
【发布时间】:2016-04-07 20:23:32
【问题描述】:

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

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

Activity 1 有一个通向 Activity 2 的按钮。

Activity 2 有一个 editText(必须填写),然后是一个指向 Activity 3 的按钮。

Activity 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 没有任何意义。

基本上,我要问的问题是:如果有多个活动,测试应用程序的特定流程的正确方法是什么?

我试图找到示例代码,但找不到适合这种特定场景的示例代码。

【问题讨论】:

    标签: android appium


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-10
        • 1970-01-01
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        相关资源
        最近更新 更多