使用 browserstack automate with selenium 和 appium 时在浏览器中单击 android 权限

Click on android permission in browser when using browserstack automate with selenium and appium

我们正在使用 browserstack 制作一个自动化测试套件,在 selenium 和 appium 中自动执行我们的测试。

对于此测试,我们需要播放受 DRM 保护的内容,虽然这适用于所有桌面平台,但我们在测试 android(和 ios)时遇到了一些问题。 因为我们需要点击视频尝试加载时出现的弹出窗口的允许按钮。

我们一直在尝试单击此按钮,但没有成功。 我们试过摆弄水龙头的坐标,但似乎没有 work/register。

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

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

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");

输入能力:

浏览器功能:

任何帮助将不胜感激,因为我们不知道如何让它工作...

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

//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");

@text='ALLOW' 无效,请尝试通过资源 ID 查找:

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

您也可以将此功能用于 android。这将自动允许所有 android 权限。

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