使用浏览器堆栈使用硒和鸦片自动化时,在浏览器中单击android权限

时间:2018-07-25 12:06:45

标签: android google-chrome selenium appium browserstack

我们正在制作一个带有浏览器堆栈的自动化测试套件,以使我们在使用appium的硒中进行自动化测试。

对于此测试,我们需要播放受DRM保护的内容,尽管该功能适用​​于所有桌面平台,但是在测试android(和ios)时遇到了一些麻烦。 由于我们需要点击视频尝试加载时出现的弹出窗口的允许按钮。

We want to click the allow option

我们一直试图单击此按钮,但没有成功。 我们尝试摆弄水龙头的座标,但似乎无法运作/注册。

我们注意到,上下文切换或单击都会导致设备进入主屏幕,因为这是我们在录制的视频中看到的。但是,屏幕截图显示了浏览器和内容,而没有转到主屏幕(弹出窗口也消失了,但是视频不起作用)

这是我们用来执行点击操作的代码:

androidDriver.context("NATIVE_APP");
int x = androidDriver.manage().window().getSize().width - 100;
int y = androidDriver.manage().window().getSize().height / 2 + 50;
new TouchAction<>(androidDriver).tap(PointOption.point(913, 1245)).perform();
androidDriver.context("CHROMIUM");

输入功能:

Input capabilities

浏览器功能:

Browser capabilities

任何帮助将不胜感激,因为我们无法弄清楚如何使其发挥作用...

3 个答案:

答案 0 :(得分:1)

由于要切换到本机上下文,因此可以找到允许按钮并单击它。根据您分享的详细信息和屏幕截图,以下代码片段应该可以解决问题:

//switch to native context
driver.context("NATIVE_APP");

//find element with text attribute ALLOW and click it
driver.findElement(By.xpath("//android.widget.Button[@text='ALLOW']")).click();

//switch back to chrome context
driver.context("CHROMIUM");

答案 1 :(得分:1)

您也可以在Android上使用此功能。这会自动允许所有android权限。

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

答案 2 :(得分:0)

@text='ALLOW'不起作用,请尝试按如下所示的资源ID查找:

driver.findElement(By.xpath("//android.widget.Button[@resource-id='android:id/button1']")).click();