【发布时间】:2019-08-06 04:54:11
【问题描述】:
将错误显示为:Returned value cannot be converted to WebElement: {element-6066-11e4-a52e-4f735466cecf=1, ELEMENT=1}
在执行代码时:
DesiredCapabilities c=new DesiredCapabilities();
c.setCapability(CapabilityType.BROWSER_NAME, "");
c.setCapability("deviceName", "871cd2f2");
c.setCapability("platformName", "Android");
c.setCapability("platformversion", "4.3");
c.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "60");
c.setCapability("appPackage","com.android.vending");
c.setCapability("appActivity","com.google.android.finsky.activities.MainActivity");
URL U=new URL("http://127.0.0.1:4723/wd/hub");
WebDriver driver=new AndroidDriver(U,c);
//AppiumDriver d=new AndroidDriver(U,c);
Thread.sleep(10000);
MobileElement m=driver.findElement(By.xpath("//*[@content-desc='Search']"));
m.click();
m.sendKeys("edthesis");
Appium 控制台错误:
[Appium] 欢迎使用Appium v1.10.0 [Appium] Appium REST http 接口 监听器开始于 0.0.0.0:4723 [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":"com.google.android.finsky.activities.MainActivity","appPackage":"com.android.vending","browserName":"","deviceName":"871cd2f2" ,"newCommandTimeout":"60","platformName":"Android","platformversion":"4.3"},"capabilities":{"desiredCapabilities":{"appActivity":"com.google.android.finsky.activities .MainActivity","appPackage":"com.android.vending","browserName":"","deviceName":"871cd2f2","newCommandTimeout":"60","platformName":"Android","platformversion" :"4.3"},"firstMatch":[{"browserName":"","platformName":"android"}]}} [W3C] 使用 args 调用 AppiumDriver.createSession(): [{"appActivity":"com.google.android.finsky.activities.MainActivity","appPackage":"com.android.vending","browserName":"","deviceName":"871cd2f2","newCommandTimeout" :"60","platformName":"Android","platformversion":"4.3"},null,{"desiredCapabilities":{"appActivity":"com.google.android.finsky.activities.MainActivity","appPackage ":"com.android.vending","browserName":"","deviceName":"871cd2f2","newCommandTimeout":"60","platformName":"Android","platformversion":"4.3"}, "firstMatch":[{"browserName":"","platformName":"android"}]}] [BaseDriver] 事件“newSessionRequested”记录在 1552640850731 (14:37:30 GMT+0530(印度标准时间))[Appium] 无法解析 W3C 功能:'deviceName' 不能为空 [Appium] 尝试修复 W3C 通过将它们与 JSONWP caps [BaseDriver] 合并来实现功能 能力 ["appActivity","appPackage","deviceName","newCommandTimeout","platformversion"] 不是标准功能,应该有一个扩展前缀 [BaseDriver] 以字符串形式传入的数字功能。功能可能 被妥协。 [Appium] 创建新的 AndroidDriver (v4.8.0) 会话 [Appium] 功能:[Appium]appActivity: com.google.android.finsky.activities.MainActivity [Appium] 应用程序包: com.android.vending [Appium] 设备名称:871cd2f2 [Appium] newCommandTimeout:60 [Appium] 平台版本:4.3 [Appium] 浏览器名称:[Appium] 平台名称:android [BaseDriver] W3C 能力 {"alwaysMatch":{"appium:app... 和所需的 MJSONWP 提供了功能 {"appActivity":"com.google.... [BaseDriver] 使用 W3C 功能创建会话:{"alwaysMatch":{"appium:app... [BaseDriver] 以字符串形式传入的数字功能。功能可能 被妥协。 [BaseDriver] 功能“newCommandTimeout”已更改 从字符串 ('60') 到整数 (60)。这可能会导致意外行为 [BaseDriver] 提供了以下功能,但未提供 appium 认可:platformversion。 [BaseDriver] 会话已创建 会话 ID:dd472778-35d6-45db-9ccf-57328cb2aa3f [AndroidDriver] Java 版本为:1.8.0_151 [ADB] 检查 adb 是否存在 [ADB] ANDROID_HOME 环境变量未设置为 Android SDK 根目录路径。需要 ANDROID_HOME 才能兼容 SDK 23+。沿着 PATH 检查 adb。 [ADB] 使用 adb 从 D:\Appium\Sdk\tools\adb.exe [ADB] [AndroidDriver] 检索设备 列表 [ADB] 尝试查找已连接的 android 设备 [ADB] 获取 连接的设备... [ADB] 连接了 1 个设备 [AndroidDriver] 使用 设备:871cd2f2 [ADB] 将设备 ID 设置为 871cd2f2 [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell getprop ro.build.version.sdk' [ADB] 当前设备属性 'ro.build.version.sdk':18 [ADB] 设备 API 级别:18 [AndroidDriver] 应用程序文件未列出,我们将运行 com.android.vending 直接在设备上 [AndroidDriver] 检查 设备上是否存在包 [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell pm list 包 com.android.vending' [AndroidDriver] 启动 Android 会话 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 等待设备' [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell echo ping' [AndroidDriver] 将设置 apk 推送到 设备... [ADB] 获取 io.appium.settings [ADB] 的安装状态 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell dumpsys 包 io.appium.settings' [ADB] 'io.appium.settings' 已安装 [ADB] 获取 'io.appium.settings' 的包信息 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell dumpsys 包 io.appium.settings' [ADB] 检查 aapt 是否存在 [ADB] ANDROID_HOME 环境变量未设置为 Android SDK 根 目录路径。与 SDK 兼容需要 ANDROID_HOME 23+。沿着 PATH 检查 aapt。 [ADB] 使用 aapt 来自 D:\Appium\Sdk\build-tools\26.0.1\aapt.exe [ADB] [ADB] 版本 已安装的 'io.appium.settings' 的名称大于或等于 应用程序版本名称 ('2.11.0' >= '2.11.0') [ADB] 不需要 安装/升级 'C:\Users\preethi.g\AppData\Local\appium-desktop\app-1.10.0\resources\app\node_modules\io.appium.settings\apks\settings_apk-debug.apk' [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell ps' [ADB] 设备 API 级别:18 [AndroidDriver] 授予 android.permission.SET_ANIMATION_SCALE、CHANGE_CONFIGURATION、 ACCESS_FINE_LOCATION by pm grant [ADB] 授予权限 ["android.permission.SET_ANIMATION_SCALE","android.permission.CHANGE_CONFIGURATION","android.permission.ACCESS_FINE_LOCATION"] 到 'io.appium.settings' [ADB] 得到以下命令块 执行: [["pm","grant","io.appium.settings","android.permission.SET_ANIMATION_SCALE",";","pm","grant","io.appium.settings","android.permission .CHANGE_CONFIGURATION",";","pm","grant","io.appium.settings","android.permission.ACCESS_FINE_LOCATION",";"]] [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell 下午授予 io.appium.settings android.permission.SET_ANIMATION_SCALE \; 下午授予 io.appium.settings android.permission.CHANGE_CONFIGURATION \; 下午授予 io.appium.settings android.permission.ACCESS_FINE_LOCATION \;' [ADB] 设备 API 级别:18 [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell am start -W -n io.appium.settings/.Settings -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' [ADB] 设备 API 级别:18 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell 设置将安全 mock_location 1' [Logcat] 启动 logcat 捕获 [ADB] 获取设备平台版本 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell getprop ro.build.version.release' [ADB] 当前设备属性 'ro.build.version.release': 4.3 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell wm size' [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell getprop ro.product.model' [ADB] 当前设备属性 'ro.product.model': SAMSUNG-SGH-I747 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell getprop ro.product.manufacturer' [ADB] 当前设备 属性“ro.product.manufacturer”:三星 [AndroidDriver] 无应用 已发送,未解析包/活动 [AndroidDriver] 无应用 能力。假设它已经在设备上 [ADB] 安装 com.android.vending [ADB] 运行的状态 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell dumpsys 包 com.android.vending' [ADB] 'com.android.vending' 已安装 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell am 强制停止 com.android.vending' [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell pm clear com.android.vending' [AndroidDriver] 在 安装了“com.android.vending”应用程序(停止并清除) [AndroidBootstrap] 观察引导断开 [ADB] 转发 系统:4724 到设备:4724 [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 forward tcp:4724 tcp:4724' [UiAutomator] 启动 UiAutomator [UiAutomator] 移动到 state 'starting' [UiAutomator] 解析 uiautomator jar [UiAutomator] 找到 jar 名称:'AppiumBootstrap.jar' [ADB] 正在运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 推送 C:\Users\preethi.g\AppData\Local\appium-desktop\app-1.10.0\resources\app\node_modules\appium-android-driver\bootstrap\bin\AppiumBootstrap.jar /data/local/tmp/' [ADB] 试图杀死所有 uiautomator 进程 [ADB] 使用 uiautomator [ADB] 运行所有进程 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell ps' [ADB] 否 已找到“uiautomator”进程 [UiAutomator] 正在启动 UIAutomator [ADB] 使用 args 创建 ADB 子进程: ["-P",5037,"-s","871cd2f2","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap ","-e","pkg","com.android.vending","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false] [UiAutomator] 进入“在线”状态 [AndroidBootstrap] Android 引导套接字现在已连接 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell dumpsys 窗口' [AndroidBootstrap] [BOOTSTRAP LOG] [debug] json 加载完成。 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 注册崩溃观察者。 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 客户端已连接 [AndroidDriver] 屏幕已解锁,无操作 [ADB] 设备 API 级别:18 [ADB] 运行 'D:\Appium\Sdk\tools\adb.exe -P 5037 -s 871cd2f2 shell am start -W -n com.android.vending/com.google.android.finsky.activities.MainActivity -S' [Appium] 新AndroidDriver会话创建成功,会话dd472778-35d6-45db-9ccf-57328cb2aa3f添加到主会话列表 [BaseDriver] 事件“newSessionStarted”记录在 1552640881307 (14:38:01 GMT+0530 (印度标准时间)) [W3C (dd472778)] 缓存 新会话的协议值“W3C” dd472778-35d6-45db-9ccf-57328cb2aa3f [W3C (dd472778)] 回应 带有 driver.createSession() 结果的客户端: {"capabilities":{"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false, "警告":{},"desired":{"browserName":"","platformName":"android","appActivity":"com.google.android.finsky.activities.MainActivity","appPackage":" com.android.vending","deviceName":"871cd2f2","newCommandTimeout":60,"platformversion":"4.3"},"browserName":"","platformName":"android","appActivity":" com.google.android.finsky.activities.MainActivity","appPackage":"com.android.vending","deviceName":"871cd2f2","newCommandTimeout":60,"platformversion":"4.3","deviceUDID" :"871cd2f2","platformVersion":"4.3","deviceScreenSize":"720x1280","deviceModel":"SAMSUNG-SGH-I747","deviceManufacturer":"samsung"}} [HTTP] POST /wd/hub/session/dd472778-35d6-45db-9ccf-57328cb2aa3f/element [HTTP] {"value":"//[@content-desc='Search']","using":"xpath"} [W3C (dd472778)] 使用 args 调用 AppiumDriver.findElement(): ["xpath","//[@content-desc='Search']","dd472778-35d6-45db-9ccf-57328cb2aa3f"] [BaseDriver] 此请求的有效定位器策略:xpath、id、 类名、可访问性 id、-android uiautomator [BaseDriver] 等待条件最多 0 毫秒 [AndroidBootstrap] 发送命令到 安卓: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//[@content-desc='Search'] ","上下文":"","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//[@content-desc='Search' ]","上下文":"","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 发现 '//*[@content-desc='Search']' 使用带有 contextId 的'XPATH':'' 多个:false [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 使用: UiSelector[CLASS=android.widget.ImageView, INSTANCE=6] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果: {"value":{"ELEMENT":"1"},"status":0} [AndroidBootstrap] 收到 引导程序的命令结果 [W3C (dd472778)] 响应客户端 使用 driver.findElement() 结果: {"element-6066-11e4-a52e-4f735466cecf":"1","ELEMENT":"1"} [HTTP]
【问题讨论】:
-
如果您正在测试 android 应用程序,则不需要使用 BROWSER_NAME 功能。删除它并尝试运行代码。
-
试过仍然显示同样的错误
-
尝试 AppiumDriver 而不是 WebDriver。可以加appium server log吗?
-
尝试使用 AppiumDriver 显示相同的错误并更新了 appium 控制台日志,请检查
-
看起来连接成功了,但是日志中神秘的返回消息让我觉得它找到了不止一个匹配项。尝试在 List 中使用 findElements(复数)或向您的 xpath 添加其他规范,以通过包含其他一些属性来隔离您想要的多个元素中的哪一个。
标签: android automation appium