首页 > 解决方案 > 无法让 selenium 和 android 虚拟设备相互交谈

问题描述

我已经在互联网上搜索过,但找不到任何可以帮助我的具体内容。我不是过于技术性,所以请轻松回答(哈哈)。

我正在尝试创建一个非常基本的脚本,该脚本转到虚拟设备上的特定 URL,输入用户名和密码并登录。

我采取以下步骤:启动Appium服务器运行测试

我已经尝试了这两种方法来在 Android 虚拟设备上启动我的 chrome 实例:

Open Application    ${global_appiumEndpoint}      
...    udid=emulator-5554    
...    platformName=Android
...    androidPackage=com.android.chrome
...    platformVersion=10     
...    deviceName=Google Pixel 2     
...    browserName=Chrome    
...    chromedriverExecutableDir=//AutomationDrivers//OLD
...    fastReset=true'''

如果我尝试与使用 selenium 命令创建的 google chrome 会话进行交互,我会收到“没有打开浏览器”的错误(即使它是??!),但是,来自 appium 库的命令似乎确实有效(但是不足以进行我的测试)

如果我尝试使用这种方法启动一个 Chrome 实例:

 ${capabilities}=    Create Dictionary
    Set to dictionary    ${capabilities}    udid    emulator-5554    
    Set to dictionary    ${capabilities}    platformName    Android
    Set to dictionary    ${capabilities}    platformVersion    10     
    Set to dictionary    ${capabilities}    deviceName    Google Pixel 2     
    Set to dictionary    ${capabilities}    browserName    Chrome    
    Set to dictionary    ${capabilities}    chromedriverExecutableDir    //AutomationDrivers//OLD
    Set to dictionary    ${capabilities}    fastReset    true
    Set to dictionary    ${capabilities}    app    com.android.browser
    Create Webdriver    Remote    command_executor=http://localhost:4723/wd/hub    desired_capabilities=${capabilities}

我被告知没有打开任何应用程序(它是!)。

所以

  1. 我究竟做错了什么?
  2. selenium 和 appium 命令是否有可能在同一个测试中共存,因为我开始怀疑我的理智了!!

谢谢大家

标签: androidseleniumautomationappiumrobotframework

解决方案


一种是 Android 应用程序,另一种是 Android 操作系统应用程序,例如 Chrome。您遇到的错误是没有应用程序启动,因为您没有提供 APK 或应用程序的类路径。

当想要使用 SeleniumLibrary 和 AppiumLibrary 进行 Web 测试时,您必须将上下文切换到 Web 测试(并从 Web 测试切换到 App 测试)。AppiumLibrary 中有适当的关键字,为此。

在您的测试脚本中,为避免库关​​键字名称冲突,您必须使用预期的前缀。例如:SeleniumLibrary.Capture Page Screenshot

我建议尝试使用 Appium/AppiumLibrary "OrangeDemo" 从 APK 启动应用程序。


在刷新了使用 Chrome 和 AppiumLibrary 的知识后,我做了一个基本示例:

*** Settings ***
Library           AppiumLibrary    run_on_failure=AppiumLibrary.Log Source

*** Test Cases ***
Open robotframework.org
    [Documentation]    Simple demo of opening Chrome, going to robotframework.org and capture a screenshot.
    Open Application    http://localhost:4723/wd/hub    platformName=Android    platformVersion=8.1    deviceName:emulator-5554    browserName=Chrome    automationName=UIAutomator2
    Switch To Context    CHROMIUM
    Go To Url    https://robotframework.org/
    Capture Page Screenshot
    Close Application

要知道的事情:

  • 在从 AppiumDesktop 启动服务器之前,您需要在设置中添加 chromedriver 可执行文件的完整路径(即 chromedriver.exe)。
  • 要在浏览器上启动 Chrome,请使用browserName=,对于应用程序有不同的选项,例如app=<path_to_APK>appPackage=appWaitActivity=automationName=UIAutomator2对于 Android 也是较新的。

推荐阅读