【问题标题】:Unexpected value returned when checking a property value for Android apps检查 Android 应用的属性值时返回意外值
【发布时间】:2019-07-24 09:40:09
【问题描述】:

最近我将我的 appium 版本更新为 1.11.1,并在我进行了基本验证(例如在我的 Android 应用程序的新屏幕布局中检查可点击元素状态)(之前我在其中查看过所有项目都是通过 UI Automator Viewer 工具“clickable=false”,所以在执行测试后,我在响应中看到所有项目都返回了属性 “clickable =true" 而是 size() 方法返回 14 个元素而不是预期值 '0'。

这里执行的验证步骤示例:

"driver.findElementsByAndroidUIAutomator("new UiSelector().clickable(true)").size()"

以及来自 Appium 服务器的日志响应:

[debug] [W3C (ee1567a8)] Calling AppiumDriver.findElements() with args: ["-android uiautomator","new UiSelector().clickable(true)","ee1567a8-d179-433a-870b-61403e6ce2f8"]
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
[debug] [BaseDriver] Waiting up to 10000 ms for condition
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"find","params":{"strategy":"-android uiautomator","selector":"new UiSelector().clickable(true)","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"find","params":{"strategy":"-android uiautomator","selector":"new UiSelector().clickable(true)","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: find
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding 'new UiSelector().clickable(true)' using 'ANDROID_UIAUTOMATOR' with the contextId: '' multiple: true
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Parsing selector: new UiSelector().clickable(true)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] UiSelector coerce type: boolean arg: true
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Using: UiSelector[CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements selector:UiSelector[CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (0)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=0, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (1)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=1, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (2)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=2, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (3)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=3, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (4)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=4, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (5)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=5, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (6)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=6, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (7)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=7, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (8)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=8, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (9)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=9, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (10)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=10, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (11)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=11, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (12)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=12, CLICKABLE=true]
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element[] is null: (13)
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] getElements tmp selector:UiSelector[INSTANCE=13, CLICKABLE=true]
[debug] [AndroidBootstrap] Received command result from bootstrap
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":[{"ELEMENT":"2"},{"ELEMENT":"3"},{"ELEMENT":"4"},{"ELEMENT":"5"},{"ELEMENT":"6"},{"ELEMENT":"7"},{"ELEMENT":"8"},{"ELEMENT":"9"},{"ELEMENT":"10"},{"ELEMENT":"11"},{"ELEMENT":"12"},{"ELEMENT":"13"},{"ELEMENT":"14"}]}
[debug] [W3C (ee1567a8)] Responding to client with driver.findElements() result: [{"element-6066-11e4-a52e-4f735466cecf":"2","ELEMENT":"2"},{"element-6066-11e4-a52e-4f735466cecf":"3","ELEMENT":"3"},{"element-6066-11e4-a52e-4f735466cecf":"4","ELEMENT":"4"},{"element-6066-11e4-a52e-4f735466cecf":"5","ELEMENT":"5"},{"element-6066-11e4-a52e-4f735466cecf":"6","ELEMENT":"6"},{"element-6066-11e4-a52e-4f735466cecf":"7","ELEMENT":"7"},{"element-6066-11e4-a52e-4f735466cecf":"8","ELEMENT":"8"},{"element-6066-11e4-a52e-4f735466cecf":"9","ELEMENT":"9"},{"element-6066-11e4-a52e-4f735466cecf":"10","ELEMENT":"10"},{"element-6066-11e4-a52e-4f735466cecf":"11","ELEMENT":"11"},{"element-6066-11e4-a52e-4f735466cecf":"12","ELEMENT":"12"},{"element-6066-11e4-a52e-4f735466cecf":"13","ELEMENT":"13"},{"element-6066-11e4-a52e-4f735466cecf":"14","ELEMENT":"14"}]
[HTTP] <-- POST /wd/hub/session/ee1567a8-d179-433a-870b-61403e6ce2f8/elements 200 5188 ms - 775

如果这可能与 Appium 最新版本本身的问题有关,或者如果我在验证步骤中遗漏了任何其他内容,那么任何人都可以提供帮助?

我没有发现最新 Appium 版本 HERE 报告的任何问题

注意事项:下面是使用的不同库及其版本。

  • Java 客户端版本:7.0.0
  • Selenium Java 客户端:3.141.59
  • Appium 版本:1.11.1

【问题讨论】:

    标签: mobile automated-tests appium appium-android java-client


    【解决方案1】:

    由于 Appium 使用 UIAutomator2 和它自己的客户端-服务器实现,因此与使用 Android SDK 中的原生 UIAutomator 的相当旧的 UI Automator Viewer 工具无关.

    正确的检查器是Appium Desktop,它的新版本通常会在新的 Appium 服务器发布后立即发布。它不仅对 UX 友好,而且在底层使用 Appium,并保证您使用它找到的内容可以在测试中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 2014-07-26
      • 1970-01-01
      • 2015-03-30
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多