android - 无法让 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}
我被告知没有打开任何应用程序(它是!)。
所以
- 我究竟做错了什么?
- selenium 和 appium 命令是否有可能在同一个测试中共存,因为我开始怀疑我的理智了!!
谢谢大家
解决方案
一种是 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 也是较新的。
推荐阅读
- java - DatePickerFragment.newInstance() 无法从静态上下文 android studio 中引用
- laravel - 目标 [...] 在构建 [...] 时不可实例化
- string - 我们如何在 Bigquery 表中将数字转换为 12 小时时间格式
- visual-studio - 在 Visual Studio 2019 解决方案中运行 PowerShell 脚本
- python - 编码和解码 - 希伯来语字符串看起来像乱码 - 来自 Teradata 的 Python 3
- if-statement - if 语句中的 if 是关键字吗?
- java - 如何使用@ModelAttribute 测试 Spring Web Controller 的 POST 方法
- c# - 在运行时版本 3.1 中连接到 Azure 函数中的 Azure 分析服务
- javascript - 为什么 foreach classlist.remove 迭代不起作用?
- python - 自定义 x 值上的 Python 经验 CDF