我的应用包含多项活动。流程是:
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。如果失败,它会一次又一次地尝试。我的问题是:
基本上,我要问的问题是:如果有多个活动,测试某个应用流量的正确方法是什么?
我试图找到示例代码,但我找不到这个特定情况。
答案 0 :(得分:1)
嗯,第一个问题的答案是使用driver.currentActivity()
我们永远不应该为应用程序的当前活动而烦恼。更好的编写代码,只需检查元素在当前上下文中是否可用。
好的,如果您的要求是首先验证活动,然后查找元素,然后使用String currentActivity=driver.currentActivity()
答案 1 :(得分:0)
您应该以与真实用户与您的应用程序交互相同的方式编写测试用例。在模拟期间,如果需要滚动,则使用Appium滚动功能来获取活动的确切元素。