【问题标题】:Click on android permission in browser when using browserstack automate with selenium and appium使用带有 selenium 和 appium 的 browserstack 自动化时,在浏览器中单击 android 权限
【发布时间】:2019-01-02 05:57:31
【问题描述】:

我们正在制作一个带有 browserstack 的自动化测试套件,通过我们在 selenium 和 appium 中的测试实现自动化。

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

我们一直在尝试单击此按钮,但没有取得多大成功。 我们试过摆弄水龙头的坐标,但它似乎不起作用/注册。

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

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

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

输入能力:

浏览器功能:

任何帮助将不胜感激,因为我们无法弄清楚如何让它工作......

【问题讨论】:

    标签: android google-chrome selenium appium browserstack


    【解决方案1】:

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

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

    【讨论】:

    • 工作就像一个魅力!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      @text='ALLOW' 不工作,尝试通过资源 ID 查找:

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

      【讨论】:

        猜你喜欢
        • 2014-02-20
        • 2015-03-28
        • 2014-03-25
        • 2015-12-10
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 2016-09-23
        相关资源
        最近更新 更多