其他分享
首页 > 其他分享> > 最新macOS 11.4+Xcode 12.5+iOS 14.6 编译安装WebDriverAgent填坑记

最新macOS 11.4+Xcode 12.5+iOS 14.6 编译安装WebDriverAgent填坑记

作者:互联网

最近要使用腾讯的GAutomator2来进行iOS端的unity游戏UI自动化测试,于是在配置环境阶段需要将WebDriverAgent编译安装到iOS设备上。

我有随时更新系统的习惯,Mac系统不能降级,iPhone系统不能降级。这整个的过程真是一个坑接着一个坑,接下来记录下自己填坑的过程吧。

我的Mac系统是现在最新的:

macOS Big Sur 版本:11.4

Xcode Version 12.5 (12E262)

iPhone 系统版本:14.6

WebDriverAgent介绍

WebDriverAgent是iOS的WebDriver服务器实现,可用于远程控制iOS设备。它允许您启动和终止应用程序,点击并滚动视图或确认屏幕上是否存在视图。

这使其成为用于应用程序端到端测试或通用设备自动化的理想工具。它通过调用Apple的API来直接在设备上执行命令来工作。

下载wt-wda

facebook原版:https://github.com/facebook/WebDriverAgent wetest版:http://git.code.oa.com/gautomator2/wt-wda 差别在于增加了一些快速点击和快速截图的接口。若使用GA录制工具,需要下载wetest版。 下载好之后找到所在目录,终端里执行./Scripts/bootstrap.sh,这个命令会通过刚刚安装的carthage安装很多依赖包,时间可能会很长,耐心等待即可。

编译WDA

1、申请苹果开发者证书,部署IOS项目平台需要开发者证书,现在可以通过个人Apple Id登录即可 登录方式为:Xcode -> Preferences -> Accounts -> Manage Certificates -> 左下角+号 -> ios development   2、使用xcode打开:WebDriverAgent.xcodproj路径,如下图:   3、选择WebDriverAgentLib和WebDriverAgentRuner的Team字段,进入Singing&Capabilities选项,修改Team字段为刚才自己设置的证书,如图:  WebDriverAgentLib:   WebDriverAgentRuner:   4、设置好账号后还会报出一个错误,如下图:   大概意思是这个项目的app ID冲突了,随意修改成一个不重复的id即可,修改位置:

  5、选择Product -> Schema -> WebDriverAgentRunner,如下图:   6、选择Product -> Destination -> 连接的真机名:   7、开始编译:

 

如果一切正常的话,那么就会Build Success。然后进行下面第8步: 8、运行运行Product -> Test,安装成功后手机上会出现一个无图标的WebDriverAgent应用,启动之 后,马上又返回到桌面,这是很正常的。

遇到的错误

错误1:提示build failed,报错信息为:semantic issue:Messaging unqualified id,可以参考以下解决方案:

解决方法: 找到如下文件: 
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Configurations/ProjectSettins.xcconfig

WARNING_CFLAGS = $(inherited) -Weverything -Wno-objc-missing-property-synthesis -Wno-unused-macros -Wno-disabled-macro-expansion -Wno-gnu-statement-expression -Wno-language-extension-token -Wno-overriding-method-mismatch -Wno-missing-variable-declarations -Rno-module-build -Wno-auto-import -Wno-objc-interface-ivars -Wno-documentation-unknown-command -Wno-reserved-id-macro -Wno-unused-parameter -Wno-gnu-conditional-omitted-operand -Wno-explicit-ownership-type -Wno-date-time -Wno-cast-align -Wno-cstring-format-directive -Wno-double-promotion -Wno-partial-availability
修改为:
WARNING_CFLAGS = $(inherited) -Weverything -Wno-objc-missing-property-synthesis -Wno-unused-macros -Wno-disabled-macro-expansion -Wno-gnu-statement-expression -Wno-language-extension-token -Wno-overriding-method-mismatch -Wno-missing-variable-declarations -Rno-module-build -Wno-auto-import -Wno-objc-interface-ivars -Wno-documentation-unknown-command -Wno-reserved-id-macro -Wno-unused-parameter -Wno-gnu-conditional-omitted-operand -Wno-explicit-ownership-type -Wno-date-time -Wno-cast-align -Wno-cstring-format-directive -Wno-double-promotion -Wno-partial-availability -Wno-objc-messaging-id

错误2:编译报错Building for iOS, but the linked and embedded framework 'RoutingHTTPServer.framework' was built for iOS + iOS Simulator.

解决方法: 将 BuildSettings ->Build Options->Validate Workspace 设置为 Yes。它仍然会显示警告,但会构建项目。

 

 

 

错误3:'assign' property of object type may become a dangling reference; consider using 'unsafe_unretained'

解决方法: 报错出双击,进入到报错代码处,将assign改为strong后再次build

 

错误4:implementing deprecated method   这个错误是使用了Object-C垃圾回收器不支持的方法 Objective-C garbage collection is no longer supported. 当时查到一个帖子,说了造成此错误的原因,但是没有说解决方法,由于不是开发者,说得其他的方法我也看不懂,我自己查了好久也没有找到解决方式,已经打算放弃了,后来在同事的帮助下,又继续找原因。总算功夫苦心人,我在苹果开发者文档(文末参考链接3)中找到了解决方法,如下:

 

在Xcode中,点击报错的地方,会导航到出错的代码,然后作如下修改:

 

修改之后再次Build,就看到 Build Succeed! 耗时4天,终于成功了,老泪纵横…   参考1:https://github.com/Tencent/GAutomator/blob/master/GAutomatorIos/README.md 参考2:https://blog.csdn.net/zhouzhoujianquan/article/details/53285281 参考3:https://developer.apple.com/documentation/xctest/xctestcase/1496269-recordfailurewithdescription 参考4:https://developer.apple.com/documentation/xctest/xctestcase/3546549-recordissue

标签:macOS,14.6,11.4,iOS,Wno,objc,报错,https,WebDriverAgent
来源: https://www.cnblogs.com/xiehong/p/14898938.html