我正在使用WdAndroid在Android的appium上运行自动化测试。我遇到困难的部分是,当第一次安装应用程序时,会弹出权限对话框(位置权限)。我使用下面的代码来接受许可。
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]查找 ' com.testpackage.testapp:ID / testClickButton'使用' ID'随着 contextId:'' multiple:false [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug]使用:UiSelector [INSTANCE = 0, RESOURCE_ID = com.testpackage.testapp:id / testClickButton] [debug] [AndroidBootstrap]从bootstrap [HTTP]< - 收到命令结果 POST / wd / hub / session / 88f58979-f7ff-4d52-b840-e930d4a04804 / element 500 116 ms - 164 [debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果:{" status":7," value":"未找到任何元素"}
自动化流程是接受权限并等待3秒以执行点击按钮。但这种情况并没有发生。
但是,如果我删除权限警告对话框,然后使用上面的代码片段来点击按钮,它就可以正常工作。只有当对话框被解除且自动化没有找到按钮时才会出现问题。
我正在Node.JS中编写自动化源代码。
答案 0 :(得分:1)
您是否可以在接受对话后尝试将应用发送到后台?有了这个,您将获得专注于您的应用程序
driver.elementById('com.android.packageinstaller:id/permission_allow_button').click()
driver.runAppInBackground(0)
在此之后,您可以再次搜索元素。
您的驱动程序还可以自动接受您的权限
capabilities.setCapability("autoGrantPermissions", "true");
我想提出的另一项功能是“noReset'因此,每次启动应用时都不会询问这些权限,这是第一次:
capabilities.setCapability("noReset", "true");