1

目前我正在使用 WebDriverWait ( XCUITest) 来等待在 iOS 应用上显示一个元素。

WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("priority 1 program")));

这适用于本地机器,但不适用于 Bitrise 服务器。使用来自 Bitrise 的日志,我意识到 Appium 确实返回了元素(找到)但没有显示在屏幕上(isDisplay返回false)。

[debug] [MJSONWP] Calling AppiumDriver.findElement() with args: ["name","priority 1 program","7b75a5af-448a-4d48-9187-3bbb84aa5519"]
[debug] [XCUITest] Executing command 'findElement'
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, name, class name, -ios predicate string, -ios class chain, accessibility id
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [JSONWP Proxy] Proxying [POST /element] to [POST http://localhost:8100/session/103F53F0-47D8-4604-8CB7-8AB5794DDD9F/element] with body: {"using":"name","value":"priority 1 program"}
[debug] [JSONWP Proxy] Got response with status 200: {"value":{"ELEMENT":"F30723B8-E7B0-4299-B260-AE3455918DBF"},"sessionId":"103F53F0-47D8-4604-8CB7-8AB5794DDD9F","status":0}
[debug] [MJSONWP] Responding to client with driver.findElement() result: {"ELEMENT":"F30723B8-E7B0-4299-B260-AE3455918DBF"}
[HTTP] <-- POST /wd/hub/session/7b75a5af-448a-4d48-9187-3bbb84aa5519/element 200 2540 ms - 122 
[HTTP] --> GET /wd/hub/session/7b75a5af-448a-4d48-9187-3bbb84aa5519/element/F30723B8-E7B0-4299-B260-AE3455918DBF/displayed {}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [XCUITest] Executing command 'proxyReqRes'
[debug] [JSONWP Proxy] Proxying [GET /wd/hub/session/7b75a5af-448a-4d48-9187-3bbb84aa5519/element/F30723B8-E7B0-4299-B260-AE3455918DBF/displayed] to [GET http://localhost:8100/session/103F53F0-47D8-4604-8CB7-8AB5794DDD9F/element/F30723B8-E7B0-4299-B260-AE3455918DBF/displayed] with body: {}
[debug] [JSONWP Proxy] Got response with status 200: "{\n  \"value\" : false,\n  \"sessionId\" : \"103F53F0-47D8-4604-8CB7-8AB5794DDD9F\",\n  \"status\" : 0\n}"

所以我检查了屏幕截图,令人惊讶的是,元素显示时没有任何视图重叠。

导航栏标题

我已经尝试过不同类型的环境,但都是一样的。

  • mac 操作系统 10.12.6,10.13.2
  • 应用程序 1.7.2、1.7.0
  • Xcode 9.2、9.0.1
  • iOS 11.2、iOS 11.0

我也从互联网上进行了一些搜索,但似乎没有任何解决方案有效。

https://github.com/appium/appium/issues/9377
https://github.com/facebook/WebDriverAgent/issues/746
https://github.com/appium/appium/issues/4131

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

有几个与元素可见性相关的未修复问题,可能与WebDriverAgent中的问题或您提到的问题有关,但仍未修复。

作为一种解决方法,您可以:

  • simpleIsVisibleCheck能力设置为 false 并检查是否有帮助
  • 切换到ExpectedConditions.presenceOfElementLocated()并且基本上只等到元素存在,跳过isDisplay属性
于 2018-01-14T06:43:59.700 回答