【问题标题】:Can't switch between two mobile drivers for Chrome and other react native app无法在 Chrome 和其他反应本机应用程序的两个移动驱动程序之间切换
【发布时间】:2022-01-13 06:33:06
【问题描述】:

下午好,

我正在尝试在 Android 上使用 Kotlin 自动化以下场景:

  1. 启动 Appium 驱动并打开 React 原生应用 (driver1)

  2. 在 React 原生应用上执行一些操作

  3. 使用 chrome 选项创建 driver2 以打开 chrome 并将深层链接粘贴到那里

  4. Deeplink 自动引导到应用程序(但我想当前会话使用的是 driver2,而不是 driver1)

  5. 我需要继续通过 driver1 继续使用该应用程序,但它无法正常工作,并且在下一个屏幕上找不到我的深层链接引导我的元素

我正在使用 Appium v​​1,21,0

语言 - Kotlin

应用 - React-native

我尝试了以下解决方案:

  • getContext - 不起作用,因为这不是一个混合应用程序,而是两个不同的移动应用程序

  • startActivity - 它实际上是从头开始启动应用程序,而不是继续(深度链接导航后我需要在特定屏幕上,无法在其他任何地方导航,流程不起作用)

  • startActivityCommand - 这个对我根本不起作用(它忽略了命令,但也许任何人都可以举例说明它的用法,因为我可能用错了)

  • driver.switchTo().window("0") - 不起作用

  • 分配给 driver2(web) 的新功能 - 不起作用,因为它已经定义,所以我们无法更改它

  • sessionId - 我还不确定它是如何工作的,但我试图找到一种方法将驱动程序分配给特定的 session-id 并且没有成功(看起来 AppiumDriver 方法不支持)

感谢任何可以帮助存档上述内容的想法、链接或资源 美好的一天!

【问题讨论】:

    标签: android react-native kotlin appium appium-android


    【解决方案1】:

    有帮助的解决方案:

        @AndroidFindBy(xpath = "//android.widget.EditText[@resource-id=\"com.android.chrome:id/search_box_text\"]")
        @iOSXCUITFindBy(id = "")
        lateinit var chromeURL: MobileElement        
    
    
    var deeplink = <your deeplink>
    driver.activateApp("com.android.chrome")
    chromeURL.sendKeys(deepLink) 
    var clickOnDeepLink = driver.findElements(MobileBy.AndroidUIAutomator("new UiSelector().text(\"$deepLink\")"))
            clickOnDeepLink[0].click() //here we could not use Keys.ENTER so we just click on the element first in the list - default android google chrome behaviour
    

    所以不需要多个驱动程序 - 相同的驱动程序实例就可以了

    【讨论】:

      猜你喜欢
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多