使用Appium测试React Native:如何过去"允许绘制其他应用程序"?

时间:2017-08-17 15:53:25

标签: react-native appium react-native-android

在我使用Appium测试React Native移动应用程序的初步概念证明中,我注意到当我加载APK开始测试时,我会看到一个Android提示符,以及#34; Permit绘制其他应用程序&#34 34;因为我正在创建我的AndroidDriver驱动程序。如果我手动移动滑块,然后单击后退按钮,一切都很好 - 应用程序完全加载,我的测试继续进行。但是,我不知道如何使用我的Appium脚本自动执行此操作,因为看起来驱动程序实例化在移动滑块之前不会完成。

大多数人都没有在Appium测试中看到这一点,因为它似乎特定于开发模式下的React Native,如此处所示......

Android emulator showing slider (highlighted)

这是我的代码,我在条件代码中点击了滑块,但我从未到过那里,因为它等待" 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测试。

1 个答案:

答案 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