【问题标题】:How to accept alerts on Android using Appium and React Native?如何使用 Appium 和 React Native 在 Android 上接受警报?
【发布时间】:2020-01-17 08:15:12
【问题描述】:

我有一个 React Native 应用程序正在使用 jest + Appium 进行测试 Jest 启动测试以在 Android 和 IOS 的真实设备上运行。

我正在为 webdriver API 使用 Appium 和 wd 库。

我需要在两个平台的屏幕上接受警报。

对于 IOS,使用以下代码似乎可行:

await driver.elementByAccessibilityId('OK').click();

但是,它不适用于 Android。

在谷歌搜索解决方案后,我来到了这个话题: How to accept this alert in appium?

那里指出的解决方案使用 Java 客户端:

driver.switchTo().alert().accept();

我在我的代码中尝试了类似的解决方案,但它引发了错误:

driver.switchTo 不是函数

这让我参加了这个问题讨论: https://github.com/webdriverio/webdriverio/issues/1733

它是从 2016 年开始的,显然 Javascript 客户端没有解决方法?还是我误解了? 我也尝试将autoAcceptAlerts添加到功能中,没有成功。

我的配置:

   import wd from 'wd';

   const conf = {
        platformName: 'Android',
        deviceName: 'Galaxy S8',
        app: '/<mypath>/app/build/outputs/apk/debug/app-debug.apk',
        platformVersion: '9',
        autoGrantPermissions: 'true',
        autoAcceptAlerts: 'true',
    }

    const driver = wd.promiseChainRemote('localhost', PORT);

   beforeAll(async () => {
    await driver.init(config);
    await driver.sleep(2000); // wait for app to load
   })

   // await driver.switchTo().alert().accept() // My Attempt 
   // await driver.elementByAccessibilityId('OK').click();

知道如何让它在 Android 上运行吗?

【问题讨论】:

    标签: javascript android react-native webdriver appium


    【解决方案1】:

    您需要更改驱动程序的上下文,以便能够与本机应用程序的警报交互。您可以使用以下代码行将上下文更改为屏幕上的第一个警报。

    appiumDriver.context(appiumDriver.getContextHandles().toArray()[1].toString());
    

    【讨论】:

    • 这个函数放在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2014-08-29
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多