在我使用Appium测试React Native移动应用程序的初步概念证明中,我注意到当我加载APK开始测试时,我会看到一个Android提示符,以及#34; Permit绘制其他应用程序&#34 34;因为我正在创建我的AndroidDriver驱动程序。如果我手动移动滑块,然后单击后退按钮,一切都很好 - 应用程序完全加载,我的测试继续进行。但是,我不知道如何使用我的Appium脚本自动执行此操作,因为看起来驱动程序实例化在移动滑块之前不会完成。
大多数人都没有在Appium测试中看到这一点,因为它似乎特定于开发模式下的React Native,如此处所示......
这是我的代码,我在条件代码中点击了滑块,但我从未到过那里,因为它等待" driver = ..."行:
AndroidDriver driver = null;
@Before
public void setUp() throws Exception {
// < defining capabilities (emulator6p) up here...>
// initialize driver object
try {
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), emulator6p);
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
}
}
@Test
public void test1() throws Exception {
By BY_slider_permitDrawing = By.id("android:id/switchWidget");
boolean present = (driver.findElements(BY_slider_permitDrawing).size() == 1);
if (present) {
driver.findElement(BY_slider_permitDrawing).click();
driver.navigate().back();
}
WebElement button_begin = driver.findElementByAccessibilityId("button-lets-begin");
button_begin.click();
}
我肯定听到很多人说Appium是React Native测试的可行解决方案,而且真的需要克服这个问题。
提前感谢任何建议!
JPH
P.S。如果它不是很清楚,测试不会挂在&#34; driver =&#34;如果我没有从头开始加载APK,那么我将需要在将来进行CI测试。
答案 0 :(得分:0)
设置正确的功能帮助我在Android上以调试模式运行Appium测试:
{
...
"appWaitPackage": "com.android.settings, com.yourPackage",
"appWaitActivity": "com.android.settings.Settings$AppDrawOverlaySettingsActivity, com.yourPackage.MainActivity",
}
将yourPackage
替换为Android应用中使用的真实包名称。这里的一些文档:https://appium.io/docs/en/writing-running-appium/caps/#android-only