0

我正在使用 WdAndroid 在 appium for Android 上运行自动化测试。我卡住的部分是第一次安装应用程序时,它会弹出权限对话框(位置权限)。我正在使用下面的代码来接受许可。

driver.elementById('com.android.packageinstaller:id/permission_allow_button').click()

对话框消失后,我想单击活动的按钮来执行所需的操作,使用下面的代码片段来实现。

const intervalObj = setInterval(() => {

  driver.elementById('com.testpackage.testapp:id/testClickButton').click();

  clearInterval(intervalObj);
}, 3000);

但上述操作不起作用,我在 appium 日志中收到以下错误

[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 使用 'ID' 和 contextId: '' multiple: false [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 查找 'com.testpackage.testapp:id/testClickButton' ] 使用:UiSelector[INSTANCE=0, RESOURCE_ID=com.testpackage.testapp:id/testClickButton] [debug] [AndroidBootstrap] 从引导 [HTTP] <-- POST /wd/hub/session/88f58979-f7ff- 收到命令结果4d52-b840-e930d4a04804/element 500 116 ms - 164 [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果:{"status":7,"value":"No element found"}

自动化流程是接受许可并等待 3 秒以执行单击按钮。但这并没有发生。

但是,如果我删除权限警报对话框,然后使用上面的代码片段来点击按钮,它就可以正常工作。仅当对话框被关闭且自动化未找到按钮时才会出现问题。

我正在用 Node.JS 编写自动化源代码。

4

1 回答 1

1

您可以在接受对话框后尝试将您的应用程序发送到后台吗?有了这个,您将重新关注您的应用程序

driver.elementById('com.android.packageinstaller:id/permission_allow_button').click()
driver.runAppInBackground(0)

在此之后,您可以再次搜索元素。

您的驱动程序还具有自动接受您的权限的功能

capabilities.setCapability("autoGrantPermissions", "true");

我想建议的另一个功能是“noReset”,因此每次启动应用程序时都不会询问这些权限,只是第一次:

capabilities.setCapability("noReset", "true");
于 2017-12-18T13:39:25.887 回答