Appium 无法在 xCode 13.3 和 iOS 15.4 上截图
几天前我醒来在iOS模拟器上运行appium UI自动化测试,该测试一直运行完美,没有任何错误。我最近升级到了 iOS 15.4 和 iOS 13.3,令我惊讶的是 Appium 无法再次截图。我尝试检查原因可能是什么,并发现此处发布的完全相同的问题 套接字挂起错误在 appium 中截取屏幕截图(iOS 15.4 beta 和 xCode 13.3 beta 2)。我在 Apple 帖子 Xcode 12 Beta 3 发行说明 中也发现了这一点。目前有解决方法吗?
这是我收到的错误
[HTTP] --> GET /wd/hub/session/ea84cef2-3649-4e76-91b9-23cec159e3a1/element/1B000000-0000-0000-1439-000000000000/screenshot
[HTTP] {}
[debug] [W3C (ea84cef2)] Calling AppiumDriver.getElementScreenshot() with args: ["1B000000-0000-0000-1439-000000000000","ea84cef2-3649-4e76-91b9-23cec159e3a1"]
[debug] [XCUITest] Executing command 'getElementScreenshot'
[debug] [WD Proxy] Matched '/element/1B000000-0000-0000-1439-000000000000/screenshot' to command name 'getElementScreenshot'
[debug] [Protocol Converter] Did not know how to rewrite the original URL '/element/1B000000-0000-0000-1439-000000000000/screenshot' for W3C protocol
[debug] [WD Proxy] Proxying [GET /element/1B000000-0000-0000-1439-000000000000/screenshot] to [GET http://127.0.0.1:8100/session/88FE5109-F180-482B-B948-980F345404CC/element/1B000000-0000-0000-1439-000000000000/screenshot] with no body
[WD Proxy] Got response with status 500: {"value":{"error":"unable to capture screen","message":"Error Domain=com.facebook.WebDriverAgent Code=1 \"Cannot take a screenshot within 20000 ms timeout\" UserInfo={NSLocalizedDescription=Cannot take a screenshot within 20000 ms timeout}","traceback":""},"sessionId":"88FE5109-F180-482B-B948-980F345404CC"}
[debug] [W3C] Matched W3C error code 'unable to capture screen' to UnableToCaptureScreen
[debug] [W3C (ea84cef2)] Encountered internal error running command: UnableToCaptureScreen: Error Domain=com.facebook.WebDriverAgent Code=1 "Cannot take a screenshot within 20000 ms timeout" UserInfo={NSLocalizedDescription=Cannot take a screenshot within 20000 ms timeout}
[debug] [W3C (ea84cef2)] at errorFromW3CJsonCode (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/protocol/errors.js:780:25)
[debug] [W3C (ea84cef2)] at ProxyRequestError.getActualError (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/protocol/errors.js:663:14)
[debug] [W3C (ea84cef2)] at JWProxy.command (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/jsonwp-proxy/proxy.js:272:19)
[debug] [W3C (ea84cef2)] at runMicrotasks (<anonymous>)
[debug] [W3C (ea84cef2)] at processTicksAndRejections (node:internal/process/task_queues:96:5)
[debug] [W3C (ea84cef2)] at XCUITestDriver.proxyCommand (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-xcuitest-driver/lib/commands/proxy-helper.js:96:12)
[debug] [W3C (ea84cef2)] at XCUITestDriver.getElementScreenshot (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-xcuitest-driver/lib/commands/screenshots.js:52:16)
[HTTP] <-- GET /wd/hub/session/ea84cef2-3649-4e76-91b9-23cec159e3a1/element/1B000000-0000-0000-1439-000000000000/screenshot 500 20106 ms - 1319
I woke a few days ago to run an appium UI automated test on iOS simulator which has been running perfectly without any error. I recently upgraded to iOS 15.4 and iOS 13.3 and to my surprise Appium is unable to take screenshots again. I tried checking what the cause could be and found exact similar problem posted here Socket hang up error while taking screenshot in appium (iOS 15.4 beta & xCode 13.3 beta 2). I find this as well on Apple post Xcode 12 Beta 3 Release Notes. Are there any workaround presently for this?
This is the error I'm getting
[HTTP] --> GET /wd/hub/session/ea84cef2-3649-4e76-91b9-23cec159e3a1/element/1B000000-0000-0000-1439-000000000000/screenshot
[HTTP] {}
[debug] [W3C (ea84cef2)] Calling AppiumDriver.getElementScreenshot() with args: ["1B000000-0000-0000-1439-000000000000","ea84cef2-3649-4e76-91b9-23cec159e3a1"]
[debug] [XCUITest] Executing command 'getElementScreenshot'
[debug] [WD Proxy] Matched '/element/1B000000-0000-0000-1439-000000000000/screenshot' to command name 'getElementScreenshot'
[debug] [Protocol Converter] Did not know how to rewrite the original URL '/element/1B000000-0000-0000-1439-000000000000/screenshot' for W3C protocol
[debug] [WD Proxy] Proxying [GET /element/1B000000-0000-0000-1439-000000000000/screenshot] to [GET http://127.0.0.1:8100/session/88FE5109-F180-482B-B948-980F345404CC/element/1B000000-0000-0000-1439-000000000000/screenshot] with no body
[WD Proxy] Got response with status 500: {"value":{"error":"unable to capture screen","message":"Error Domain=com.facebook.WebDriverAgent Code=1 \"Cannot take a screenshot within 20000 ms timeout\" UserInfo={NSLocalizedDescription=Cannot take a screenshot within 20000 ms timeout}","traceback":""},"sessionId":"88FE5109-F180-482B-B948-980F345404CC"}
[debug] [W3C] Matched W3C error code 'unable to capture screen' to UnableToCaptureScreen
[debug] [W3C (ea84cef2)] Encountered internal error running command: UnableToCaptureScreen: Error Domain=com.facebook.WebDriverAgent Code=1 "Cannot take a screenshot within 20000 ms timeout" UserInfo={NSLocalizedDescription=Cannot take a screenshot within 20000 ms timeout}
[debug] [W3C (ea84cef2)] at errorFromW3CJsonCode (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/protocol/errors.js:780:25)
[debug] [W3C (ea84cef2)] at ProxyRequestError.getActualError (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/protocol/errors.js:663:14)
[debug] [W3C (ea84cef2)] at JWProxy.command (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-base-driver/lib/jsonwp-proxy/proxy.js:272:19)
[debug] [W3C (ea84cef2)] at runMicrotasks (<anonymous>)
[debug] [W3C (ea84cef2)] at processTicksAndRejections (node:internal/process/task_queues:96:5)
[debug] [W3C (ea84cef2)] at XCUITestDriver.proxyCommand (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-xcuitest-driver/lib/commands/proxy-helper.js:96:12)
[debug] [W3C (ea84cef2)] at XCUITestDriver.getElementScreenshot (/Users/kadeoye/.appium/appium-xcuitest-driver/node_modules/appium-xcuitest-driver/lib/commands/screenshots.js:52:16)
[HTTP] <-- GET /wd/hub/session/ea84cef2-3649-4e76-91b9-23cec159e3a1/element/1B000000-0000-0000-1439-000000000000/screenshot 500 20106 ms - 1319
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
改回 iOS 15.2 我遇到了同样的问题,挣扎了几个小时......尝试了一切......这与你的情况完全相同。昨天还可以用,今天突然就不行了。所以最后,唯一的变化就是 xcode 模拟器从 15.2 更新到了 iOS 15.4。这就是为什么 appium 检查器停止工作并截屏的原因。我想 appium 方面的更新需要一些时间,但在那之前只需回滚到最新的稳定 iOS 模拟器版本 15.2。 如何做到这一点 - Xcode ->首选项->组件->选择旧版 iOS 模拟器 ->立即下载、检查并安装 ->构建->瞧:)
Change back to iOS 15.2 I had the same issue and struggled for hours... tried everything.. It was absolutely the same case as yours. Yesterday it was working and suddenly today it stopped working. So at the end, the only change was that the xcode simulator updated itself to iOS 15.4 from 15.2. That's why somehow appium inspector stopped working and taking screenshots. I guess it will take some time from appium side things to be updated but until then just row back to latest stable iOS simulator version 15.2. How to do that - Xcode -> Preferences -> Components -> select older iOS version Simulator -> download, Check and Install now -> build -> voila :)
可以通过将 WebDriverAgentLib/Utilities/FBScreenshot.m (第 257 行)更改
为:
报告问题,解决方案也在这里:
https://github.com/appium/appium/issues/16604
It can be fixed by changing WebDriverAgentLib/Utilities/FBScreenshot.m (257th line):
to:
Problem is reported and it’s solution is also here:
https://github.com/appium/appium/issues/16604