我的应用包含多个 Activity 。流程是:
启动画面 -> Activity 1 -> Activity 2 -> Activity 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 将始终尝试在当前运行的 Activity 中查找元素,即使它是 SplashScreen。如果失败,它将一次又一次地尝试。我的问题是:
- 如何检测当前的运行 Activity ?
- 我如何考虑当前的 Activity ?如果元素在当前上下文中不存在,我认为 Appium 没有必要尝试查找这些元素。
基本上,我要问的问题是:如果有多个 Activity ,测试应用的特定流程的正确方法是什么?
我试图找到示例代码,但找不到适用于这种特定情况的示例代码。
最佳答案
那么,第一个问题的答案是使用 driver.currentActivity()
我们不应该担心应用程序的当前 Activity 。最好编写代码来简单地检查元素在当前上下文中是否可用。
好吧,如果您的要求是先验证 Activity ,然后查找元素,然后使用 String currentActivity=driver.currentActivity()
关于android - 使用 Appium 测试多个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34587491/