当前位置: 首页 > news >正文

百度 门户网站网站运营管理报告总结

百度 门户网站,网站运营管理报告总结,微信门户网站开发,天津北辰做网站前言 项目闲置下来了#xff0c;终于抽空有时间搞自动化了#xff0c;看了下网上的教程基本通篇都是android自动化的介绍 #xff0c;ios自动化方面的内容网上简介的少之可怜。由于本人对ios自动化也是第一次做#xff0c;甚至对苹果电脑的使用都不太熟悉#xff0c;花了大… 前言 项目闲置下来了终于抽空有时间搞自动化了看了下网上的教程基本通篇都是android自动化的介绍 ios自动化方面的内容网上简介的少之可怜。由于本人对ios自动化也是第一次做甚至对苹果电脑的使用都不太熟悉花了大概一周时间粗略的看下ios开发知识网上随手下载的来源于这两本pdf 《iOS开发从入门到精通.pdf》、《iOS开发指南从零基础到App上架.pdf 》、至于Mac笔记本的学习完全是边使用边查询操作 本文完全秉着指导小白操作的流程带你一步一步搭建IOS自动化测试环境 以下内容参考了如下网站 appium英文官方https://appium.io/docs/en/drivers/ios-xcuitest/index.html appium使用问题集锦 Appium Discuss (需要kx上网) facebook-wda源码GitHub - kwmgenius/facebook-wda: Facebook WebDriverAgent Python Client Library (not official) TestHome社区重签名后的 wda 正常启动了但是没有返回 sessionID · TesterHome WebDriverAgent for ios: https://docs.katalon.com/katalon-studio/docs/installing-webdriveragent-for-ios-devices.html (需要kx上网) Appium XCUITest Driver Setup: Appium XCUITest Driver Setup - Tutorial (需要kx上网) stackoverflow中文社区https://www.soinside.com/ 简书mac下配置Appium和WebDriverAgent mac下配置Appium和WebDriverAgent - 简书 ATX ATX 文档 - iOS 真机如何安装 WebDriverAgent https://testerhome.com/topics/7220 Mac OS安装appium: https://www.techaheadcorp.com/blog/how-to-install-appium-on-mac/ 初识 iOS 自动化测试框架 WebDriverAgent : https://www.cnblogs.com/zgq123456/p/9979280.html openatx/facebook-wda安装教程https://github.com/openatx/facebook-wda/blob/master/README.md 需要kx上网 如何设置和自定义WebDriverAgent服务器: https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/wda-custom-server.md IOS 自动化相关框架介绍 自动化测试类工具 随着移动互联网的兴起APP 测试的越来越被重视Android 系统因为自己的开源性测试工具和测试方法比较广为流传但是 iOS 系统的私密性导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iOS APP 的测试以下为大家收集了非常全面的 iOS 测试工具涵盖各大领域希望各位能有所认识 自动化测试类工具 1. UIAutomation UIAutomation 是苹果提供的 UI 自动化测试框架使用 JavaScript 编写。 基于 UIAutomation 有扩展型的工具框架和驱动型的框架。扩展型框架以 JavaScript 扩展库方法提供了很多好用 js 工具注入式的框架通常会提供一些 Lib 或者是 Framework要求测试人员在待测应用的代码工程中导入这些内容框架可以通过他们完成对 app 的驱动。 驱动型 UI Automation 在自动化测试底层使用了 UI Automation 库通过 TCP 通信的方式驱动 UI Automation 来完成自动化测试通过这种方式编辑脚本的语言不再局限于 JavaScript。 这个工具在 iOS UI 自动化测试中使用非常广泛。 具体参考资料https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html 2.XCTest XCTest 是苹果在 iOS 7 和 Xcode5 引入的一个简单而强大的测试框架集成在 Xcode 中用来编写测试代码。它提供了各个层次的测试。 XCTest 测试编写起来非常简单并且遵循 xUnit 风格。 Xcode 在创建工程时会默认使用 XCTest并且默认创建了 **Unit Test单元测试**和 **UI Test界面测试**两个 Target其中 Unit Test 主要用于测试代码的大部分基本功能比如绝大多数 Model 的类和方法测试业务逻辑测试网络接口调用测试等等。 UI Test 一般会考虑到用户的交互流程模拟用户的交互操作利用 XCTest 的 UI 记录特性来获取界面上的一些列视图元素和操作事件然后在测试方法中触发事件。 所以这是一个可以提供各个层次的测试的框架比如单元测试自动化测试性能测试等。 具体参考资料 About Testing with Xcode 3. KIF KIF 是 Keep It Functional 项目的缩写是一款 iOS app 功能性测试框架来自 Square该测试框架只支持 iOS。 所有测试使用 Objective-C 语言编写对测试人员来讲需要熟练的掌握 Objective-C 语言 对苹果开发者来说非常容易上手更是一款开发者广为推荐的测试工具。 KIF 使用未公开的 Apple API私有 API这对于测试目的而言是安全的基于第三方 iOS UI 的单元测试框架所以可以做项目的单元测试也可以做 UI 集成测试。但缺点是运行较慢。 具体参考资料GitHub - kif-framework/KIF: Keep It Functional - An iOS Functional Testing Framework 4. Frank Frank 是 iOS 开发环境下一款实现自动测试的工具Xcode 环境下开发完成后通过 Frank 实现结构化的测试用例其底层语言为 Ruby作为一款开源的 iOS 测试工具在国外已经有广泛的应用。 但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。 它提供了针对 iOS 平台的功能测试能力可以模拟用户的操作对应用程序进行黑盒测试并且使用 Cucumber 编写测试用例使测试用例如同自然语言一样描述功能需求让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。 优点 测试场景是在 Cucumber 的帮助下用可理解的英语句子写的还有活跃的社区支持以及不断扩大中的库。 **缺点**对手势的支持有限所以在设备上运行测试有点难。 具体参考资料App Development Ireland - App Developers Dublin 5. Calabash-iOS Calabash 是一个适用于 iOS 和 Android 开发者的跨平台 app 测试框架可用来测试屏幕截图、手势和实际功能代码。 Calabash 开源免费并支持 Cucumber 语言Cucumber 能让你用自然的英语语言表述 app 的行为实现 BDDBehavior Driven Development行为驱动开发。 而 Calabash-iOS 就是一个基于 Calabash 的 iOS 的功能、自动化测试框架。 优点 有大型社区支持列表项简单类似英语表述的测试语句支持在屏幕上的所有动作如滑动缩放旋转敲击等。 缺点 测试步骤失败后将跳过所有的后续步骤这可能会导致错过更严重的产品问题。测试耗费时间因为它总是默认先安装 app需要 Calabash 框架安装在 iOS 的 ipa 文件中 因此测试人员必须要有 iOS 的 app 源码。除了 Ruby对其他语言不友好 具体资料获取路径GitHub - calabash/calabash-ios: Calabash for iOS 6. Subliminal Subliminal 是另一款与 XCTest 集成的框架也是个不错 iOS 集成测试框架。 与 KIF 不同的是它基于 UIAutomation 编写对开发者隐藏 UIAutomation 中一些复杂的细节。可惜近几年没有更新了若能支持 swift 就好了。 具体资料获取路径GitHub - Diaoul/subliminal: Subtitles, faster than your thoughts 7. Kiwi Kiwi 是对 XCTest 的一个完整替代使用 xSpec 风格编写测试。Kiwi 带有自己的一套工具集包括 expectations、mocks、stubs甚至还支持异步测试。 它是一个适用于 iOS 开发的 Behavior Driven DevelopmentBDD库有着非常漂亮的语法。 优点在于其简洁的接口和可用性易于设置和使用可以写出结构性强易读测试非常适合新手开发者。 Kiwi 也是使用 Objective-C 语言编写易于 iOS 开发人员上手。 具体资料获取路径GitHub - kiwi-bdd/Kiwi: Simple BDD for iOS8. Appium Appium 是一个开源的、跨平台的自动化测试工具支持 iOS、Android 和 FirefoxOS 平台。 通过 Appium开发者无需重新编译 app 或者做任何调整就可以测试移动应用可以使测试代码访问后端 API 和数据库。 它是通过驱动苹果的 UIAutomation 框架来实现的 iOS 平台支持。 开发者可以使用 WebDriver 兼容的任何语言编写测试脚本如 RubyC#Java JSOC PHPPythonPerl 和 Clojure 语言。 具体资料获取路径Redirecting 内测发布工具 1. fir.im 为开发者提供测试应用极速发布应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务帮助开发者将更多精力放在产品的开发与应用的优化上。 2. 蒲公英 『蒲公英』是专为 iOS、Android 开发者提供的免费用应用内测、托管的平台旨在解决开发者将应用分发给内测用户时的繁杂、低效的问题。 3. TestFlight TestFlight 是苹果提供的应用测试工具允许开发者邀请用户对应用的预发布版本进行测试从而在应用正式发布至 App Store 前收集用户反馈。 以上常用框架介绍完了本篇幅主要以appium进行实践讲解 Appium驱动IOS测试原理 XCUITest是苹果开发的一个做IOS自动化测试的框架需要了解些Swift等iOS编程知识 WebDriverAgent是Facebook开发的一个iOS自动化测试工具先来看下面的这张原理图 WDA在Client创建了一个Server在手机端安装了一个叫作WebDriverAgentRunner 的一个应用这个应用会接收来自 Server 的指令并连接底层的XCTest.framwork让 XCTest.framwork 调用苹果API来操作手机进行自动化 而appium是把WebDriverAgentRunner 给集成进去了因此实现了appium的跨平台能力 通过上图我们了解到 Appium 很粗暴的把整个 WebDriverAgent 直接集成到自己的项目里然后通信机制就走 WebDriverAgentAppium 其实就提供了一个 Client 端的作用。所以 iOS 9.3 系统之后自动化测试核心是 WebDriverAgentAppium 就提供了一个 Client 端来写脚本和发送指令。 Appium 自动化架构模式可以用一个抽象的架构表示就是下面这样的 从图中可以看出 Client 端是 Appium 之前本身提供的Server 端是WebDriverAgent 和 Instruments Appium 直接把 WebDriverAgent 整个集成进来Instruments 是为了支持 iOS 9.3 之前的系统最右边是一个手机之前 Server 是和 bootstrap.jar 通信这里 WebDriverAgent 提供了 WebDriverAgentRunner 类似 bootstrap.jar 的功能WebDriverAgent与之通信WebDriverAgentRunner 是一个应用Client 和 server 运行了之后WebDriverAgentRunner 会被装到手机上这个应用会接收来自 Server 的指令并连接底层的 XCTest.framwork并告诉XCTest.framwork 操作手机进行自动化。 关于 WebDriverAgent FaceBook 出品: 实现了一个 server通过 server 可以远程控制 iOS 设备启动应用、关闭应用、点击、滚动等操作 通过连接 XCTest.framework 调用苹果的 API 执行动作 支持多个设备同时进行自动化 Appium、Macaca 已经集成。 但是 WebDriverAgent 仅仅只提供了一个 server和 inspect 进行元素定位并没有像 Appium 一样提供 java 或 python 的 Client 端去写脚本脚本执行的时候发送指令给 server然后去运行。WebDriverAgent 要求你自己去实现 Client 端即拿 Java/ Python 的 WebDriver 库进行封装然后发送指令。所以 WebDriverAgent 其实就类似于 Appium server就只是一个 server。 基础环境搭建 基础环境 一台苹果笔记本、一个iphone手机 基础环境 MacBook Pro: 10.15.7 Macbook Pro做 iOS 测试Mac 是绕不开的我们依赖的软件环境需要运行在 Mac 上必须要有一台 Mac 本很贵得攒银子咬牙买一台 ~我用的公司分配的测试本。 iphone真机iPhone 8 Plus 14.4 iPhone、iPad既然测试 iOS 软件那 iPhone 和 iPad 也自然不用多说了虽然 Xcode 里有虚拟机但是实际测试还是以真机为准。本文也主要以真机为准 appium1.20.2 appium原理 Appium是一个开源、跨平台的测试框架可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid来支持老android版本。 Appium支持Selenium WebDriver支持的所有语言如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure或者Perl语言更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation我们只能用javascript来编写测试用例而且只能用Instruction来运行测试用例。同样如果只使用Google的UIAutomation我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。 appium选择了client-server的设计模式。只要client能够发送http请求给server那么的话client用什么语言来实现都是可以的这就是appium及webdriver如何做到支持多语言的 Appium优点 开源 跨架构:Native App、Hybird App、Web App 跨设备:Android、iOS、Firefox OS 不依赖源码 使用任何 WebDriver 兼容的语言来编写测试用例。比如 Java Objective-C JavaScript with Node.js (in both callback and yield-based flavours) PHP Python Ruby C# Clojure 或者 Perl. 不需要重新编译APP 支持IOS手机录制视频 Appium理念 你无需为了自动化而重新编译或者修改你的应用。 你不必局限于某种语言或者框架来写和运行测试脚本。 一个移动自动化的框架不应该在接口上重复造轮子。移动自动化的接口应该统一 无论是精神上还是名义上都必须开源。 Appium 在 iOS 下工具的变革: iOS 9 之前一直以 instruments 下的 UIAutomation为驱动底层技术弊端由于 instruments 的限制单台 mac 只能对应单台设备 iOS 9.3 时代推出 XCUITest 工具用以替代 UIAutomation iOS 10 时代苹果直接废弃了 UIAutomation、Facebook 推出 WebDriverAgent实现的 server 能够支持单台 mac 对应多个设备 Appium 在iOS 9.3 后全面采用 WebDriverAgent 的方案。 xcode: 12.4 MacBook appstore应用商店搜索下载即可 安装内容 前提环境 python , selenium , setuptools、pip 通用环境 Homebrew Node NPM Carthage Appium python-client Appium-Doctor ios-deploy ideviceinstaller libimobiledevice ios_webkit_debug_proxy authroize-ios IOS环境 xCode , Command Line Tools 前提环境 python 此处使用python3 官网下载https://www.python.org/ 一步下一步安装即可 selenium 终端输入: pip install Selenium 安装最新版本的selenium。 pip install Selenium 如需安装指定的版本则pip install Selenium版本号。 setuptools、pip 下载setuptools https://pypi.python.org/pypi/setuptools 、https://pypi.python.org/pypi/pip 打开cmd 进入setuptools解压目录输入python setup.py install 进入pip解压目录输入python setup.py install 安装好后打开终端输入pip如提示不是内部命令则将python安装目录下Scripts目录添加到环境变量Path中。 通用环境 Homebrew Homebrew是一个包管理软件它可以使我们更容易地安装其他一些软件 终端输入安装 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bash/usr/bin/ruby -e span stylecolor:#a31515$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)/span /code/span/span 覆盖安装 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bash/usr/bin/ruby -e span stylecolor:#a31515$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)/span /code/span/span 检查homebrew是否安装 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cppbrew -v span stylecolor:#008000//检查homebrew是否安装/span brew list span stylecolor:#008000//查看已安装列表/span brew update span stylecolor:#008000//更新Homebrew/span /code/span/span 如果安装失败 可以打开网址http://vip.ytesting.com/q.do?aidff80808172521d8201726a74986f0880 将其内容保存为homebrew.txt 然后终端输入 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bash/usr/bin/ruby homebrew.txt /code/span/span 注意此步骤还顺带安装了Xcode命令行工具xcode-commaindline-tools。 Node NPM Node是一个javascript运行时环境npm是节点包管理器。我们需要这些因为Appium是一个节点应用程序。 在终端中输入以下命令(此命令也将安装npm) span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spannode /code/span/span 查看node版本 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-undefinednode -v /code/span/span span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-undefined重新安装 /code/span/span span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanreinstall node /code/span/span 默认的npm源再国内都很慢安装好node之后需要重新配置一个国内源 (非必须) span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashnpm config span stylecolor:#0000ffset/span registry https://registry.npm.taobao.org/ /code/span/span Carthage Carthage项目依赖管理 类似于 java 的 maven 主要是 WebDriverAgent 使用WebDriverAgent 是用它做项目依赖的 终端输入 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spancarthage /code/span/span 更新carthage : rew upgrade carthage 重新安装 : brew reinstall carthage 2. 安装完成后检查一下是否安装成功 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cpp carthage version span stylecolor:#008000//打印出版本号即表示安装成功/span /code/span/span Appium Appium是一个用于本地、混合和移动web应用程序的开源测试自动化框架。它使用WebDriver协议驱动iOS、Android和Windows mobile应用程序。 安装 Appium二选1 两者基本没什么区别 非要说区别的话 方式1 安装版本较稳定 方式2则版本最新。 方式1安装桌面版 appium-server推荐 桌面版包含了appium-server同时也包含一个元素定位器建议安装桌面版。 方式2安装 appium-server 版 终端安装server版输入 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmnpm span stylecolor:#0000ffinstall /span-g appium /code/span/span 默认安装最新的版本如果想安装指定的版本 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssnpm install -g appiumspan stylecolor:#0000ff1/span.7.2 /code/span/span 卸载 Appium span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssnpm uninstall -g appium npm cache clean span stylecolor:#ff0000--force/span /code/span/span 安装完成之后输入appium -v显示版本号表示appium server安装成功 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-undefinedappium -v /code/span/span 启动appium服务 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-scssappium span stylecolor:#2b91af[1]/span span stylecolor:#880000965/span$ span stylecolor:#2b91af[Appium]/span Welcome to Appium v1span stylecolor:#880000.9/spanspan stylecolor:#880000.1/span span stylecolor:#2b91af[Appium]/span Appium span stylecolor:#a31515REST/span http interface listener started on span stylecolor:#8800000.0/spanspan stylecolor:#880000.0/spanspan stylecolor:#880000.0/span:span stylecolor:#8800004723/span /code/span/span python-client 下载python-client span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashgit span stylecolor:#0000ffclone/span gitgithub.com:appium/python-client.git /code/span/span 安装python-client span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashspan stylecolor:#0000ffcd/span python-client span stylecolor:#008000# 进入python-client目录/span python setup.py install span stylecolor:#008000# 安装python-client/span /code/span/span Appium-Doctor 检查appium安装是否成功的工具集指令 安装 appium-doctor span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmnpm span stylecolor:#0000ffinstall /spanappium-doctor -g /code/span/span 检查 iOS环境是否安装成功 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssappium-doctor span stylecolor:#ff0000--ios/span /code/span/span 备注 necessary dependcies 必须全部是对勾状态 可选部分依赖可以不用全部安装 ios-deploy ios-deploy 一个不需要用Xcode安装和调试应用的命令行工具。需要一个有效的开发者证书需要 Xcode 7以上的版本。终端输入命令进行安装 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spanios-deploy span stylecolor:#008000# 安装命令/span span stylecolor:#0000ffbrew /spanreinstall ios-deploy span stylecolor:#008000# 重新安装/span span stylecolor:#0000ffbrew /spanupgrade ios-deploy span stylecolor:#008000# 更新命令/span /code/span/span 常用命令如下 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssios-deploy -c # 查看当前链接的设备 ios-deploy --span stylecolor:#2b91af[xxx.app]/span # 安装APP ios-deploy span stylecolor:#ff0000--id/span span stylecolor:#2b91af[udid]/span span stylecolor:#ff0000--uninstall_only/span span stylecolor:#ff0000--bundle_id/span span stylecolor:#2b91af[bundleId]/span # 卸载应用 ios-deploy span stylecolor:#ff0000--id/span span stylecolor:#2b91af[udid]/span span stylecolor:#ff0000--list_bundle_id/span # 查看所有应用 ios-deploy span stylecolor:#ff0000--id/span span stylecolor:#2b91af[udid]/span span stylecolor:#ff0000--exists/span span stylecolor:#ff0000--bundle_id/span # 查看应用是否安装 /code/span/span ideviceinstaller libimobiledevice ios-deploy、ideviceinstaller 类似 android 的 adb 是 Appium 底层用到的工具之一用于获取 iOS 设备信息。 libimobiledevice 是一个跨平台的软件库 不依赖任何已有的私有库不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息备份和恢复设备管理 SpringBoard 图标管理已安装应用获取通讯录、日程、备注和书签等信息 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spanideviceinstaller span stylecolor:#008000# 用于查看bundleid/span span stylecolor:#0000ffbrew /spanreinstall ideviceinstaller span stylecolor:#008000# 重新安装/span /code/span/span ideviceinstaller 是一个与iOS设备的installation_proxy交互的工具允许安装、升级、卸载、存档、还原和列举已安装或存档的app。此工具用于在真机上运行测试默认是都安装的。 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spanlibimobiledevice --HEAD span stylecolor:#008000# 安装最新的更新/span span stylecolor:#0000ffbrew /spanreinstall libimobiledevice span stylecolor:#008000# 重新安装/span /code/span/span 其常用命令如下 查看当前所连接的设备 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashidevice_id -l span stylecolor:#008000# 显示当前所连接设备的 udid/span instruments -s devices span stylecolor:#008000# 列出所有设备包括真机、模拟器、mac/span 1.查看模拟器的udid用的xcrun instruments -sxcrun simctl list2.启动这个模拟器xcrun instruments -w span stylecolor:#a31515B39EC2FF-8A8B-4BFF-AFA4-7875904A9EB8/span3.在这个模拟器安装路径下的APPxcrun simctl install B39EC2FF-8A8B-4BFF-AFA4-7875904A9EB8 /Users/brian/Desktop/TPPortal.app4.卸载这个模拟器中的APPxcrun simctl uninstall B39EC2FF-8A8B-4BFF-AFA4-7875904A9EB8 com.cntaiping.portalQingyunTest5、启动模拟器上的APPxcrun simctl launch B39EC2FF-8A8B-4BFF-AFA4-7875904A9EB8 com.cntaiping.portalQingyunTest6.不启动 Xcode 该如何开启 iOS 模拟器/Applications/Xcode.app/Contents/Developer/Applications/Simulator7.ios app 包查看包名Bundle identifier打开plist编辑器open打开解压后的安装包中的info.plist文件 查看plist中的Bundle identifier。/code/span/span 安装应用 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssideviceinstaller -u span stylecolor:#2b91af[udid]/span -span stylecolor:#0000ffi/span span stylecolor:#2b91af[xxx.ipa]/span # xxxspan stylecolor:#880000.ipa/span 为应用在本地的路径 /code/span/span 卸载应用 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-cssideviceinstaller -u span stylecolor:#2b91af[udid]/span -U span stylecolor:#2b91af[bundleId]/span /code/span/span 查看设备已安装的应用 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashideviceinstaller -u [udid] -l span stylecolor:#008000# 查看设备安装的第三方应用/span ideviceinstaller -u [udid] -l -o list_user span stylecolor:#008000# 同上查看设备安装的第三方应用/span ideviceinstaller -u [udid] -l -o list_system span stylecolor:#008000# 查看设备安装的系统应用/span ideviceinstaller -u [udid] -l -o list_all span stylecolor:#008000# 查看设备安装的所有应用/span /code/span/span 获取设备信息 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashideviceinfo -u [udid] span stylecolor:#008000# 获取设备信息/span ideviceinfo -u [udid] -k DeviceName span stylecolor:#008000# 获取设备名称 同命令 /span idevicenameidevicename span stylecolor:#008000# 同上/span ideviceinfo -u [udid] -k ProductVersion span stylecolor:#008000# 获取设备版本 10.3.3/span ideviceinfo -u [udid] -k ProductType span stylecolor:#008000# 获取设备类型 iPhone 81/span ideviceinfo -u [udid] -k ProductName span stylecolor:#008000# 获取设备系统名称/span /code/span/span 查看手机实时日志 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashidevicesyslog span stylecolor:#008000#屏幕上即可看见手机上所有的日志/span idevicesyslog iphone.log span stylecolor:#008000#重定向日志到文件中/span /code/span/span 获取手机端崩溃报告 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashidevicecrashreport span stylecolor:#008000# 参数可设置具体文件存放位置/span /code/span/span 截屏 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashidevicescreenshot span stylecolor:#008000#获取当前截屏效率比appium截屏高10倍/span /code/span/span 其他系统文件信息 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashideviceinfo span stylecolor:#008000# 获取设备所有信息/span idevicesyslog span stylecolor:#008000# 获取设备日志/span idevicecrashreport -e span stylecolor:#0000fftest/span span stylecolor:#008000# 获取设备 /span crashlogspan stylecolor:#0000fftest/span 是文件夹需新建 idevicediagnostics span stylecolor:#008000# 管理设备状态 - 重启、关机、睡眠等/span /code/span/span 重启 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-undefinedidevicediagnostics restart /code/span/span ios_webkit_debug_proxy Appium使用ios_webkit_debug_proxy这个工具在真机上访问web view。即混合应用的测试 在终端中运行以下命令 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spanios-webkit-span stylecolor:#0000ffdebug/span-proxy span stylecolor:#008000# 安装命令/span span stylecolor:#0000ffbrew /spanreinstall ios-webkit-span stylecolor:#0000ffdebug/span-proxy span stylecolor:#008000# 重新安装/span/code/span/span 附 iOS WebKit Debug Proxy的原理是在本地起了一个代理做WebInspector到WebKit远程调试的协议转发。 authroize-ios iOS 授权工具主要用于模拟器中一些权限的授权 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmnpm span stylecolor:#0000ffinstall /span-g authroze-iossudo authroze-ios sudo authroze-ios /code/span/span iOS 环境 Xcode **安装Xcode和模拟器 * 启动Mac应用程序商店并下载/安装XcodeVersion 13.1。安装之后启动Xcode并选择 Xcode Preferences Components 来安装可能想要测试的模拟器。 安装Command Line Tools 默认是不会安装Command Line Tools的Command Line Tools是在Xcode中的一款工具可以在命令行中运行C程序。为了配置appium环境我们需要安装Xcode Command Line Tools。 官网下载 下载完成后双击已下载的 .dmg 进行安装 检验 Command Line Tools 是否安装成功 方法一 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-vhdlxcode-span stylecolor:#0000ffselect/span span stylecolor:#008000--install # 查看是否安装/span xcode-span stylecolor:#0000ffselect/span: span stylecolor:#a31515error/span: command span stylecolor:#a31515line/span tools are already installed, span stylecolor:#0000ffuse/span span stylecolor:#a31515Software Update/span span stylecolor:#0000ffto/span install updates(错误命令行工具已经安装请使用“软件更新”安装更新) /code/span/span 方法二 打开Xcode创建一个新的项目在OSX下面选择Application,如果右侧出现Command line tool图 标表示已经安装成功。 方法三 打开XCode 新建工程如果安装了在新建窗口可以看到 安装完成后在终端中输入以下命令来查看安装版本 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-undefinedxcodebuild -version /code/span/span 如果已经安装过xcodeappium-doctor提示未安装则运行命令即可 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-csharpsudo xcode-span stylecolor:#0000ffselect/span -r /code/span/span 附录 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-csharpxcrun simctl list | grep span stylecolor:#a31515(Booted)/span span stylecolor:#2b91af# 查看已启动的模拟器udid/span instruments -s devices span stylecolor:#2b91af# 列出所有设备包括真机、模拟器、mac/span span stylecolor:#2b91af# 录像功能 /span xrecord --quicktime --list xrecord --quicktime --namespan stylecolor:#a31515iPhone/span --span stylecolor:#0000ffout/spanspan stylecolor:#a31515/Users/yong/video/iphone.mp4/span --force/code/span/span 至此iOS环境搭建完毕只适用于模拟器真机的话还需要配置。 iOS 真机调试环境配置 前面我们知道WebDriverAgent是集成Appium测试ios应用的桥梁 表现形式上是安装在ios设备上的一个应用WebDriverAgent 先前是一个独立的项目需要自己从github下载进行编译执行 在后来appium已经强行将其绑定在其组件中也就是说当你安装好appium时WebDriverAgent也自动帮忙将其安装好只需要手动修改部分内容重新编译打包即可运行。 方式一WebDriverAgent通过下载源码进行安装 不推荐通过此种方式安装该方式先前是为老版本ios 9.4 之前的版本沿用 且 github上的源码已经距离现在两年多没有更新了为避免不必要的问题。尽可能不要使用此种方式 安装webdriverAgent (1) 在github上下载最新webdriverAgent代码 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashgit span stylecolor:#0000ffclone/span https://github.com/facebook/WebDriverAgent /code/span/span (2)下载依赖 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashspan stylecolor:#0000ffcd/span /Users/yourname/WebDriverAgentspan stylecolor:#0000ffmkdir/span -p Resources/WebDriverAgent.bundlesh ./Scripts/bootstrap.sh /code/span/span 该脚本会使用Carthage下载所有的依赖使用npm打包响应的js文件。执行完成后直接双击打开WebDriverAgent.xcodeproj这个文件。 配置webdriverAgent 配置WebDriverAgentLib选择开发者账号 配置WebDriverAgentRunner选择开发者账号 连接并选择自己的ios设备运行 运行成功后iphone手机上会新建一个无图标的WebDriverAgent的应用自动打开后马上又返回桌面 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-armasm而在xcode控制台会打印如下日志里面有span stylecolor:#0000ffIP/span地址与端口号 /code/span/span 在网址上输入http://(ip地址):(端口号)/status如果网页上返回一些json格式的数据说明运行成功http://10.0.223.58:8100/status有些iphone手机通过手机的IP和端口号还不能访问此时需要将手机的端口转发到mac上 iproxy 8100 8100 # iproxy 8300 8100 执行命令后通过访问 http://localhost:8100/ status来验证, 如果网页上返回一些json格式的数据说明运行成功 而如果是想查看UI的图层则可访问http://localhost:8100/inspector方便书写测试用例 备注 通常来说为了持续集成自动化会比较好一些我们不必每次都通过这种方式来启动xcode、WebDriverAgent这种方式只在第1次搭建环境时运行即可我们可以在自动化脚本中加入如下代码这样只要在以后启动appium后运行自动化脚本就会直接启动WebDriverAgent desiredCapabilities.setCapability(useNewWDA, true); 如果xcode在先启动wda而代码中又用此行代码运行时xcode中会显示执行失败报 出冲突的错误哦所以后期只在代码中启动WebDriverAgent即可不再需要用xcode启动 精简过程如下 方式二WebDriverAgent通过集成appium进行安装 命令行安装 命令行安装的appium一般安装在/usr/local/bin/appium下 WebDriverAgent将会在路径/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/ 下 桌面版安装 WebDriverAgent的路径是ls /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent 以上两种方式都可以在对应目录看到 WebDriverAgent.xcodeproj 工程右键选择用xcode打开 在 “SigningCapabilities” 下将 WebDriverAgentLib 和 WebDriverAgentRunner设置成 “Automatically manage signing” 并在 “Team” 中选择你的开发团队 新用户第一次需要创建Team团队 剩下操作步骤和方式一种第3步一样 不在此列出 IOS自动化-WebDriverAgent-APPIUM框架原理 WebDriverAgent是Facebook开发的基于XCTest.framework的开源项目实现了在iOS上支持WebDriver协议的服务可以用来启动/终止APP点击/滑动页面。 webdriver协议是一套基于HTTP协议的JSON格式规范协议规定了不同操作对应的格式。之所以需要这层协议是因为iOS、Android、浏览器等都有自己的UI交互方式通过这层”驱动层“屏蔽各平台的差异就可以通过相同的方式进行自动化的UI操作做网络爬虫常用的selenium是浏览器上实现webdriver的驱动而WebDriverAgent则是iOS上实现webdriver的驱动。 Appium客户端 在iOS上的客户端实际上就是使用了WebDriverAgent作为实现webdriver协议的驱动层。 Appium服务端 Appium的服务端是一个桌面应用用于和客户端通信启动Appium的服务端之后会在电脑上启动一个默认端口号是4723的HTTP服务。当我们编写完脚本执行时脚本代码会被转换为webdriver协议的JSON数据通过HTTP请求发送到电脑的4723端口。Appium服务端将脚本的执行请求下发给客户端请求客户端的6100端口客户端同样使用webdriver协议响应 利用Appium-Python-Client进行iOS的自动化测试 配置 appium 工具 运行 Appium-Desktop 开启start server 点击start new session并且在Desired Capabilities 中输入相关的参数后点击Start Session 运行成功后会弹出一个控制界面在该界面中可以控制手机上正在运行的程序 开始自动化测试 打开下载后的appiumSimpleDemo文件打开appiumSimpleDemo.xcodepro程序,配置下TARGET的签名 在appiumSimpleDemo的根目录执行编译指令编译出一个app文件xcodebuild -sdk iphoneos -target appiumSimpleDemo -configuration Release编译成功后app文件的地址会打印在命令行中 ;此处直接使用 xcode进行编译也可以 怎么方便怎么来 执行appiumSimpleDemo.py 文件路径如下/Users/jx/PycharmProjects/53ui_ios/venv/bin/python /Users/jx/appiumSimpleDemo/appiumSimpleDemo.py 源码如下 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-pythonspan stylecolor:#0000ffimport/span unittest span stylecolor:#0000ffimport/span os span stylecolor:#0000fffrom/span appium span stylecolor:#0000ffimport/span webdriver span stylecolor:#0000fffrom/span time span stylecolor:#0000ffimport/span sleepspan stylecolor:#0000ffclass/span span stylecolor:#a31515appiumSimpleTezt/span (unittest.TestCase):span stylecolor:#0000ffdef/span span stylecolor:#a31515setUp/span(self):app_path span stylecolor:#a31515/Users/jx/appiumSimpleDemo/build/Release-iphoneos/appiumSimpleDemo.app/spanapp os.path.abspath(app_path)self.driver webdriver.Remote(command_executor span stylecolor:#a31515http://127.0.0.1:4723/wd/hub/span,desired_capabilities {span stylecolor:#a31515app/span: app,span stylecolor:#a31515platformName/span: span stylecolor:#a31515iOS/span,span stylecolor:#a31515platformVersion/span: span stylecolor:#a3151514.4/span,span stylecolor:#a31515deviceName/span: span stylecolor:#a31515iPhone 8 plus/span,span stylecolor:#a31515bundleId/span: span stylecolor:#a31515com.yongapps.app/span,span stylecolor:#a31515udid/span: span stylecolor:#a315154c7a46cee7f512ff1463eb3b09dc5329e779355c/span})span stylecolor:#0000ffdef/span span stylecolor:#a31515test_push_view/span(self):next_view_button self.driver.find_element_by_accessibility_id(span stylecolor:#a31515entry next view/span)next_view_button.click()sleep(span stylecolor:#8800002/span)back_view_button self.driver.find_element_by_accessibility_id(span stylecolor:#a31515Back/span)back_view_button.click()span stylecolor:#0000ffdef/span span stylecolor:#a31515tearDown/span(self):sleep(span stylecolor:#8800001/span)span stylecolor:#008000# self.driver.quit()/spanspan stylecolor:#0000ffif/span __name__ span stylecolor:#a31515__main__/span:suite unittest.TestLoader().loadTestsFromTestCase(appiumSimpleTezt)unittest.TextTestRunner(verbosityspan stylecolor:#8800002/span).run(suite) /code/span/span 踩坑笔记 问题1 如果安装 carthage出现以下错误: span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-javascriptspan stylecolor:#a31515Error/span: span stylecolor:#a31515An/span unexpected error occurred during the brew link step span stylecolor:#a31515The/span formula built, but is not symlinked into /usr/local span stylecolor:#a31515Permission/span denied dir_s_mkdir - span stylecolor:#ab5656/usr//spanlocal/span stylecolor:#a31515Frameworks/span span stylecolor:#a31515Error/span: span stylecolor:#a31515Permission/span denied dir_s_mkdir - span stylecolor:#ab5656/usr//spanlocal/span stylecolor:#a31515Frameworks/span /code/span/span 原因是carthage已经安装但是没有 link 到 brew还有就是文件夹权限问题在终端输入: span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashMacBook-pro~ % sudo span stylecolor:#0000ffmkdir/span /usr/local/Frameworks MacBook-pro~ % sudo span stylecolor:#0000ffchown/span $(span stylecolor:#0000ffwhoami/span):admin /usr/local/Frameworks MacBook-pro~ % brrew span stylecolor:#0000fflink/span carthage /code/span/span 问题2 安装 libimobiledevice ideviceinstaller 遇到 “invalid active developer path” 运行 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-luaMacBook-pro~ % xcode-span stylecolor:#0000ffselect/span span stylecolor:#008000--install/span MacBook-pro ~ % sudo xcode-span stylecolor:#0000ffselect/span -r /code/span/span 可能出现的问题 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-javascriptspan stylecolor:#ff0000dyld/span: span stylecolor:#a31515Library/span not span stylecolor:#ff0000loaded/span: span stylecolor:#ab5656/usr//spanlocal/opt/openssl/lib/libsslspan stylecolor:#880000.1/spanspan stylecolor:#880000.0/spanspan stylecolor:#880000.0/span.dylib span stylecolor:#a31515Referenced/span span stylecolor:#ff0000from/span: span stylecolor:#ab5656/usr//spanlocal/opt/libimobiledevice/lib/libimobiledevicespan stylecolor:#880000.6/span.dylib span stylecolor:#a31515Reason/span: image not found /code/span/span 如果遇到如上错误则先卸载ideviceinstaller 和 libimobiledevice span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmMacBook-pro ~ % span stylecolor:#0000ffbrew /spanuninstall ideviceinstaller MacBook-pro ~ % span stylecolor:#0000ffbrew /spanuninstall libimobiledevice /code/span/span 然后再重安装即可 问题3 ios-webkit-debug-proxy 安装遇到 The following directories are not writable by your user: 详细错误提示 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-sql The following directories span stylecolor:#0000ffare/span span stylecolor:#0000ffnot/span writable span stylecolor:#0000ffby/span your span stylecolor:#0000ffuser/span:span stylecolor:#ab5656//spanusrspan stylecolor:#ab5656//spanspan stylecolor:#0000fflocal/spanspan stylecolor:#ab5656//spansharespan stylecolor:#ab5656//spanmanspan stylecolor:#ab5656//spanman5span stylecolor:#ab5656//spanusrspan stylecolor:#ab5656//spanspan stylecolor:#0000fflocal/spanspan stylecolor:#ab5656//spansharespan stylecolor:#ab5656//spanmanspan stylecolor:#ab5656//spanman7 /code/span/span 解决方法因为是该目录无权限无法写入的问题所以直接sudo给上权限就可以了然后再使用安装命令就可以了示例如下图 问题4xcode-select --install命令行安装提示 Xcode alone is not sufficient on Sierra. span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-vhdlspan stylecolor:#a31515Error/span: Xcode alone span stylecolor:#0000ffis/span span stylecolor:#0000ffnot/span sufficient span stylecolor:#0000ffon/span Sierra. Install the Command span stylecolor:#a31515Line/span Tools:xcode-span stylecolor:#0000ffselect/span span stylecolor:#008000--install/span /code/span/span 解决方案 Mac最新场景下安装Xcode时已经没有Command Line了需要单独安装。根据提示在使用命令xcode-select --install 安装时最后结果是不能安装该软件。 需要安装如上所示 问题5方式一 安装WebDriverAgent 执行 ./Scripts/bootsrap.sh 出错如下 安装最后我们可以看到部分依赖安装需要安装 Carthage 这个东西如果没注意的话就会造成 RoutingHTTPServer 部分文件缺失后面 build 就会报错 。 通过命令 brew install carthage 安装后再执行 ./Scripts/bootstrap.sh 即可。 根据 WebDriverAgent 官网提供的步骤将参数替换为我们真机的参数后在真机上尝试build 。 执行完命令后可能会出现如下报错 从报错信息来看缺少 development team那么我们回到 Xcode将 Automatically manage signing 进行勾选后选择一个 Team注意要进入 WebDriverAgentRunner 中进行设置 。 设置好之后又会出现报错如下 这个报错信息就和我们之前提到的一样bundle indentifler 不唯一,保险起见这里将项目中所有的 Targets 都进行了修改 修改好之后我们再次 build之前的问题解决了不幸的是 build 又 fail 了又出现了新的报错 解决办法 没错我们在报错出双击进入到报错代码处将 assign 改为 strong 后再次 build Build succeeded 老泪纵横… 最终再执行 最后踩坑build成功后ios真机上没有安装WDA 这个问题困扰了我一个星期然后最后我把ios设备名改成英文后安装成功了。。。 终于在 iOS 真机上看到了 WDA 的身影 问题6执行 ./Scripts/bootstrap.sh ERROR in ./js/app.js 报错 出错如下 问题7: 执行时候报 xcodebuild failed with code 65 错误 问题8: 个人证书调试失败 Failed to register bundle identifier. The app identifier com.facebook.WebDriverAgentRunner cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again. 需要手动更改目标的bundle id方法是进入“Build Settings”选项更改“Product bundle Identifier”的值使Xcode将接受默认为com.facebook.WebDriverAgentRunner你需要改成不一样的如io.automation.WebDriverAgentRunner (此处必须修改为和你在苹果开发者后台申请的bundle Id 一样 ) 返回 “SigningCapabilities” 选项看到对于文件WebDriverAgentRunner的配置文件已经创建成功了 问题9: 解决警告问题 解决方案如下 问题10: 将WDA安装到被测手机上安装失败 提示如下  span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-vhdl报错 span stylecolor:#a31515error/span: No profiles span stylecolor:#0000fffor/span span stylecolor:#00b0e8io/span.uitest.WebDriverAgentRunner.xctrunner were found: Xcode couldnspan stylecolor:#00b0e8t/span find any iOS App Development provisioning profiles matching span stylecolor:#00b0e8io/span.uitest.WebDriverAgentRunner.xctrunner. Automatic signing span stylecolor:#0000ffis/span disabled span stylecolor:#0000ffand/span unable span stylecolor:#0000ffto/span span stylecolor:#0000ffgenerate/span a profile. span stylecolor:#0000ffTo/span enable automatic signing, pass -allowProvisioningUpdates span stylecolor:#0000ffto/span xcodebuild. (span stylecolor:#0000ffin/span target span stylecolor:#00b0e8WebDriverAgentRunner/span from project span stylecolor:#00b0e8WebDriverAgent/span) /code/span/span 报这个错是因为没有接入相关的设备到MAC上只要设备接入并通过XCode菜单Product-Destnation-Select Devices选中要连接的设备就行。 解决方案 XCode: Product-Destination-Select your iphone Product-Scheme-Select WebDriverAgentRunner Product → Test 注意运行Test之前手机先解锁再通过USB线连接到电脑。 问题10: 解决Product → Test报错问题如下所示 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-sqlspan stylecolor:#ab5656//spanusrspan stylecolor:#ab5656//spanspan stylecolor:#0000fflocal/spanspan stylecolor:#ab5656//spanlibspan stylecolor:#ab5656//spannode_modulesspan stylecolor:#ab5656//spanappiumspan stylecolor:#ab5656//spannode_modulesspan stylecolor:#ab5656//spanappiumspan stylecolor:#ab5656-/spanwebdriveragentspan stylecolor:#ab5656//spanWebDriverAgent.xcodeproj span stylecolor:#0000ffUser/spanspan stylecolor:#ab5656-/spansupplied CFBundleIdentifier span stylecolor:#0000ffvalue/span span stylecolor:#a31515com.facebook.wda.lib/span span stylecolor:#0000ffin/span the Info.plist must be the same span stylecolor:#0000ffas/span the PRODUCT_BUNDLE_IDENTIFIER build setting span stylecolor:#0000ffvalue/span span stylecolor:#a31515com.facebook.WebDriverAgentLib/span./code/span/span 解决方案 运行报错 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-delphi/usr/span stylecolor:#0000fflocal/span/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h:span stylecolor:#88000016/span:span stylecolor:#8800009/span: span stylecolor:#a31515CocoaAsyncSocket/GCDAsyncSocket.h/span span stylecolor:#0000fffile/span span stylecolor:#0000ffnot/span found /code/span/span 解决进入appium-webdriveragent目录重新执行 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashMacBook-pro % span stylecolor:#0000ffcd/span /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent MacBook-pro appium-webdriveragent % sh ./Scripts/bootstrap.sh /code/span/span 再次执行Product → Test弹出密钥授权弹窗输入密钥多次输入密钥直到弹窗消失 最后报错Command CodeSign failed with a nonzero exit code 解决方案---通过终端命令 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashMacBook-pro appium-webdriveragent % xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination span stylecolor:#a31515id000-000080E/span span stylecolor:#0000fftest/span /code/span/span 执行中会弹出密钥弹窗多次输入密钥直到弹窗消失 最后机上可以看到一个没有图标的 WebDriverAgentRunner.app 应用进入设置 -》通用 -》设备管理 -》点击 开发者app下面的证书 -》点击“第一个蓝色字体信任按钮” -》点击信任再重新执行项目即可正常连接 xcode点击▶️直接运行 再次报错 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-sql span stylecolor:#ab5656//spanusrspan stylecolor:#ab5656//spanspan stylecolor:#0000fflocal/spanspan stylecolor:#ab5656//spanlibspan stylecolor:#ab5656//spannode_modulesspan stylecolor:#ab5656//spanappiumspan stylecolor:#ab5656//spannode_modulesspan stylecolor:#ab5656//spanappiumspan stylecolor:#ab5656-/spanwebdriveragentspan stylecolor:#ab5656//spanWebDriverAgent.xcodeproj span stylecolor:#0000ffUser/spanspan stylecolor:#ab5656-/spansupplied CFBundleIdentifier span stylecolor:#0000ffvalue/span span stylecolor:#a31515com.facebook.wda.runner/span span stylecolor:#0000ffin/span the Info.plist must be the same span stylecolor:#0000ffas/span the PRODUCT_BUNDLE_IDENTIFIER build setting span stylecolor:#0000ffvalue/span span stylecolor:#a31515io.uitest.WebDriverAgentRunner/span. /code/span/span 解决方案 最终看到这样输出就是成功了 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-x86asmspan stylecolor:#0000ffTest/span Suite ‘All tests’ started span stylecolor:#2b91afat/span span stylecolor:#8800002017/span-span stylecolor:#88000001/span-span stylecolor:#88000023/span span stylecolor:#88000015/span:span stylecolor:#88000049/span:span stylecolor:#88000012.585/span span stylecolor:#0000ffTest/span Suite ‘WebDriverAgentRunnerspan stylecolor:#880000./spanxctest’ started span stylecolor:#2b91afat/span span stylecolor:#8800002017/span-span stylecolor:#88000001/span-span stylecolor:#88000023/span span stylecolor:#88000015/span:span stylecolor:#88000049/span:span stylecolor:#88000012.586/span span stylecolor:#0000ffTest/span Suite ‘UITestingUITests’ started span stylecolor:#2b91afat/span span stylecolor:#8800002017/span-span stylecolor:#88000001/span-span stylecolor:#88000023/span span stylecolor:#88000015/span:span stylecolor:#88000049/span:span stylecolor:#88000012.587/span span stylecolor:#0000ffTest/span Case ‘-[UITestingUITests testRunner]’ started. t span stylecolor:#8800000./span00s Start span stylecolor:#0000ffTest/span span stylecolor:#2b91afat/span span stylecolor:#8800002017/span-span stylecolor:#88000001/span-span stylecolor:#88000023/span span stylecolor:#88000015/span:span stylecolor:#88000049/span:span stylecolor:#88000012.588/span t span stylecolor:#8800000./span00s Set span stylecolor:#2b91afUp/span/code/span/span 备注 xxx.app为 Xcode 编译后的应用安装包路径 xxx.ipa为应用在本地的路径 问题11: wda安装成功了但是 验证时访问无结果 解决方案 有些国产的iPhone机器通过手机的IP和端口还不能访问此时需要将手机的端口转发到Mac上。 使用--HEAD安装最新版本 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-rubyspan stylecolor:#008000$ /spanbrew install libimobiledevice --HEAD span stylecolor:#008000$ /spaniproxy span stylecolor:#8800008100/span span stylecolor:#8800008100/span /code/span/span 这时通过访问http://localhost:8100/status确认WDA是否运行成功。 此时你应该可以看到有返回信息只不过返回的sessionID 为空 此处如果有问题见问题12 问题12: Appium 重签名后的 wda 正常启动了但是没有返回 sessionID wda 的日志 如下 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-yamlspan stylecolor:#a31515Test/span span stylecolor:#a31515Suite/span span stylecolor:#a31515WebDriverAgentRunner.xctest/span span stylecolor:#a31515started/span span stylecolor:#a31515at/span span stylecolor:#8800002020-06-12 15:20:28.188/span span stylecolor:#a31515Test/span span stylecolor:#a31515Suite/span span stylecolor:#a31515UITestingUITests/span span stylecolor:#a31515started/span span stylecolor:#a31515at/span span stylecolor:#8800002020-06-12 15:20:28.188/span span stylecolor:#8800002020-06-12 15:20:28.215329/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span [span stylecolor:#a31515User/span span stylecolor:#a31515Defaults/span] span stylecolor:#a31515Couldnt/span span stylecolor:#a31515write/span span stylecolor:#a31515values/span span stylecolor:#a31515for/span span stylecolor:#a31515keys/span span stylecolor:#a31515(/spanspan stylecolor:#a31515KeyboardAutocorrection/span span stylecolor:#a31515)/span span stylecolor:#a31515in/span span stylecolor:#a31515CFPrefsPlistSource0x282b9ed00/span span stylecolor:#a31515(Domain:/span span stylecolor:#a31515com.apple.Preferences,/span span stylecolor:#ff0000User:/span span stylecolor:#a31515kCFPreferencesCurrentUser,/span span stylecolor:#ff0000ByHost:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515,/span span stylecolor:#ff0000Container:/span span stylecolor:#a31515(null),/span span stylecolor:#ff0000Contents Need Refresh:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515):/span span stylecolor:#a31515setting/span span stylecolor:#a31515preferences/span span stylecolor:#a31515outside/span span stylecolor:#a31515an/span span stylecolor:#a31515applications/span span stylecolor:#a31515container/span span stylecolor:#a31515requires/span span stylecolor:#a31515user-preference-write/span span stylecolor:#a31515or/span span stylecolor:#a31515file-write-data/span span stylecolor:#a31515sandbox/span span stylecolor:#a31515access/span span stylecolor:#8800002020-06-12 15:20:28.221426/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span [span stylecolor:#a31515User/span span stylecolor:#a31515Defaults/span] span stylecolor:#a31515Couldnt/span span stylecolor:#a31515write/span span stylecolor:#a31515values/span span stylecolor:#a31515for/span span stylecolor:#a31515keys/span span stylecolor:#a31515(/spanspan stylecolor:#a31515KeyboardPrediction/span span stylecolor:#a31515)/span span stylecolor:#a31515in/span span stylecolor:#a31515CFPrefsPlistSource0x282b9ed00/span span stylecolor:#a31515(Domain:/span span stylecolor:#a31515com.apple.Preferences,/span span stylecolor:#ff0000User:/span span stylecolor:#a31515kCFPreferencesCurrentUser,/span span stylecolor:#ff0000ByHost:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515,/span span stylecolor:#ff0000Container:/span span stylecolor:#a31515(null),/span span stylecolor:#ff0000Contents Need Refresh:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515):/span span stylecolor:#a31515setting/span span stylecolor:#a31515preferences/span span stylecolor:#a31515outside/span span stylecolor:#a31515an/span span stylecolor:#a31515applications/span span stylecolor:#a31515container/span span stylecolor:#a31515requires/span span stylecolor:#a31515user-preference-write/span span stylecolor:#a31515or/span span stylecolor:#a31515file-write-data/span span stylecolor:#a31515sandbox/span span stylecolor:#a31515access/span span stylecolor:#8800002020-06-12 15:20:28.222215/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span [span stylecolor:#a31515User/span span stylecolor:#a31515Defaults/span] span stylecolor:#a31515Couldnt/span span stylecolor:#a31515write/span span stylecolor:#a31515values/span span stylecolor:#a31515for/span span stylecolor:#a31515keys/span span stylecolor:#a31515(/spanspan stylecolor:#a31515KeyboardShowPredictionBar/span span stylecolor:#a31515)/span span stylecolor:#a31515in/span span stylecolor:#a31515CFPrefsPlistSource0x282b9ed00/span span stylecolor:#a31515(Domain:/span span stylecolor:#a31515com.apple.Preferences,/span span stylecolor:#ff0000User:/span span stylecolor:#a31515kCFPreferencesCurrentUser,/span span stylecolor:#ff0000ByHost:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515,/span span stylecolor:#ff0000Container:/span span stylecolor:#a31515(null),/span span stylecolor:#ff0000Contents Need Refresh:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515):/span span stylecolor:#a31515setting/span span stylecolor:#a31515preferences/span span stylecolor:#a31515outside/span span stylecolor:#a31515an/span span stylecolor:#a31515applications/span span stylecolor:#a31515container/span span stylecolor:#a31515requires/span span stylecolor:#a31515user-preference-write/span span stylecolor:#a31515or/span span stylecolor:#a31515file-write-data/span span stylecolor:#a31515sandbox/span span stylecolor:#a31515access/span span stylecolor:#8800002020-06-12 15:20:28.224043/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span [span stylecolor:#a31515User/span span stylecolor:#a31515Defaults/span] span stylecolor:#a31515Couldnt/span span stylecolor:#a31515write/span span stylecolor:#a31515values/span span stylecolor:#a31515for/span span stylecolor:#a31515keys/span span stylecolor:#a31515(/spanspan stylecolor:#a31515DidShowGestureKeyboardIntroduction/span span stylecolor:#a31515)/span span stylecolor:#a31515in/span span stylecolor:#a31515CFPrefsPlistSource0x282b9ed00/span span stylecolor:#a31515(Domain:/span span stylecolor:#a31515com.apple.Preferences,/span span stylecolor:#ff0000User:/span span stylecolor:#a31515kCFPreferencesCurrentUser,/span span stylecolor:#ff0000ByHost:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515,/span span stylecolor:#ff0000Container:/span span stylecolor:#a31515(null),/span span stylecolor:#ff0000Contents Need Refresh:/span span stylecolor:#a31515No/spanspan stylecolor:#a31515):/span span stylecolor:#a31515setting/span span stylecolor:#a31515preferences/span span stylecolor:#a31515outside/span span stylecolor:#a31515an/span span stylecolor:#a31515applications/span span stylecolor:#a31515container/span span stylecolor:#a31515requires/span span stylecolor:#a31515user-preference-write/span span stylecolor:#a31515or/span span stylecolor:#a31515file-write-data/span span stylecolor:#a31515sandbox/span span stylecolor:#a31515access/span span stylecolor:#a31515Test/span span stylecolor:#a31515Case/span span stylecolor:#a31515-[UITestingUITests testRunner]/span span stylecolor:#a31515started./spanspan stylecolor:#a31515t/span span stylecolor:#a31515/span span stylecolor:#8800000./spanspan stylecolor:#a3151500s/span span stylecolor:#a31515Start/span span stylecolor:#a31515Test/span span stylecolor:#a31515at/span span stylecolor:#8800002020-06-12 15:20:28.224/spanspan stylecolor:#a31515t/span span stylecolor:#a31515/span span stylecolor:#8800000./spanspan stylecolor:#a3151500s/span span stylecolor:#a31515Set/span span stylecolor:#a31515Up/span span stylecolor:#8800002020-06-12 15:20:28.230656/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span span stylecolor:#a31515Built/span span stylecolor:#a31515at/span span stylecolor:#a31515Jun/span span stylecolor:#88000012/span span stylecolor:#8800002020 15:19:29/span span stylecolor:#8800002020-06-12 15:20:28.238785/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123635]/span span stylecolor:#a31515ServerURLHere-http://172.18.62.8:8100-ServerURLHere/span span stylecolor:#8800002020-06-12 15:20:28.239467/spanspan stylecolor:#a315150800/span span stylecolor:#a31515WebDriverAgentRunner-Runner[616:123836]/span span stylecolor:#a31515Using/span span stylecolor:#a31515singleton/span span stylecolor:#a31515test/span span stylecolor:#a31515manager/span /code/span/span 使用 postman 发送请求返回的 sessionID 为 null但是 xcode 的控制台没有报任何错误 启动应用程序直接返回 400 此问题坑爹至极 网上搜索了众多内容都没有此问题的答案 但是有人在testhome上已经提出了这个问题但是至今没有人回复答案 解决方案 安装usbmuxd span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#0000ffbrew /spanspan stylecolor:#0000ffinstall /spanusbmuxd /code/span/span iproxy该工具会将设备上的端口号映射到电脑上的某一个端口 最后使用iproxy 进行端口转发的时候 一定跟上指定的设备id 即: iproxy local_port device_port -u udid 问题13解决 XCUITest iproxy exited with code 208 命令行执行 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-perlps -ax|span stylecolor:#0000ffgrep/span -**i** span stylecolor:#a31515iproxy/span|span stylecolor:#0000ffgrep/span -v span stylecolor:#0000ffgrep/span|awk span stylecolor:#a31515{print kill -9 $1}/span|sh /code/span/span 问题14每次测试应用都需要启动 WebDriverAgent , 修改使用脚本方式自动运行 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-bashspan stylecolor:#008000# 解锁keychain以便可以正常的签名应用/span PASSWORDspan stylecolor:#a31515YourPassword/span security unlock-keychain -p span stylecolor:#008000$PASSWORD/span ~/Library/Keychains/login.keychainspan stylecolor:#008000# 获取设备的UDID用到了之前的 libimobiledevice/span UDID$(idevice_id -l | span stylecolor:#0000ffhead/span -n1)span stylecolor:#008000# 真机运行测试/span xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination span stylecolor:#a31515idspan stylecolor:#008000$UDID/span/span span stylecolor:#0000fftest/spanspan stylecolor:#008000# 模拟器运行测试/span span stylecolor:#008000#xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination platformiOS Simulator,nameiPhone X test/span /code/span/span 脚本运行完成后同样手机/模拟器上会出现一个无图标的 WebDriverAgent 应用启动之后马上又返回到桌面。此时终端会输出 IP 地址和端口。 附录 1. 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系 考虑到想要将待测试应用安装到真机 首先绕不过去的必须得申请证书申请证书之前又必须得要开发者账号以上都具备了开始按步骤申请Certificate、Provisioning Profile、App ID 可是即使你申请成功难免对以上三者之间关系感到懵逼以下对三者之间关系进行简介说明帮助理清之间的脉络关系 开发者账号类型 概念介绍 如果你拥有一个开发者账户的话在iOS Dev Center打开Certificates, Indentifiers Profiles你就可以看到如下的列表 Profile Portal改版有一段时间了改版之后的结构比以前更清晰明了易于理解和管理。 上面的列表就包含了开发、调试和发布iOS应用程序所需的所有内容Certificates、Identifiers、Devices、Provisioning Profiles。下面将一一解释这几个东东。 Certificate 证书是用来给应用程序签名的只有经过签名的应用程序才能保证他的来源是可信任的并且代码是完整的 未经修改的。在Xcode Build Setting的Code Signing Identity中你可以设置用于为代码签名的证书。 众所周知我们申请一个Certificate之前需要先申请一个Certificate Signing Request (CSR) 文件而这个过程中实际上是生成了一对公钥和私钥保存在你Mac的Keychain中。代码签名正是使用这种基于非对称秘钥的加密方式用私钥进行签名用公钥进行验证。如下图所示在你Mac的keychain的login中存储着相关的公钥和私钥而证书中包含了公钥。你只能用私钥来进行签名所以如果没有了私钥就意味着你不能进行签名了所以就无法使用这个证书了此时你只能revoke之前的证书再申请一个。因此在申请完证书时最好导出并保存好你的私钥。当你想与其他人或其他设备共享证书时把私钥传给它就可以了。私钥保存在你的Mac中而苹果生成的Certificate中包含了公钥。当你用自己的私钥对代码签名后苹果就可以用证书中的公钥来进行验证确保是你对代码进行了签名而不是别人冒充你同时也确保代码的完整性等。 证书主要分为两类Development和ProductionDevelopment证书用来开发和调试应用程序Production主要用来分发应用程序根据证书种类有不同作用下面是证书的分类信息括号内为证书有效期 注不同类型的开发者账户所能创建的证书种类不同关于开发者账户的对比和InHouse证书相关的内容请见我的另一篇文章 Development App Development (1年)用来开发和真机调试应用程序。Push Development (1年)用来调试Apple Push Notification Production In-House and Ad Hoc (3年)用来发布In-House和AdHoc的应用程序。 App Store 用来发布提交App Store的应用程序。 MDM CSR Push Production (1年)用来在发布版本中使用Apple Push Notification。 Pass Type ID Certificate Website Push ID Certificate 有一些类型的证书我没有使用过所以也不了解具体的作用。 App ID App ID用于标识一个或者一组AppApp ID应该是和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下两种 Explicit App ID唯一的App ID这种App ID用于唯一标识一个应用程序例如com.ABC.demo1标识Bundle ID为com.ABC.demo1的程序。Wildcard App ID通配符App ID用于标识一组应用程序。例如*可以表示所有应用程序而com.ABC.*可以表示以com.ABC开头的所有应用程序。每创建一个App ID我们都可以设置该App ID所使用的APP Services也就是其所使用的额外服务。每种额外服务都有着不同的要求例如如果要使用Apple Push Notification Services则必须是一个explicit App ID以便能唯一标识一个应用程序。下面是目前所有可选的服务和相应的配置要求。 如果你的App使用上述的任何一种service就要按照要求去配置。 Device Device最简单了就是iOS设备。Devices中包含了该账户中所有可用于开发和测试的设备。 每台设备使用UDID来唯一标识。 每个账户中的设备数量限制是100个。Disable 一台设备也不会增加名额只能在membership year 开始的时候才能通过删除设备来增加名额。 Provisioning Profile 一个Provisioning Profile文件包含了上述的所有内容证书、App ID、设备。 试想一下如果我们要打包或者在真机上运行一个应用程序我们首先需要证书来进行签名用来标识这个应用程序是合法的、安全的、完整的等等然后需要指明它的App ID并且验证Bundle ID是否与其一致再次如果是真机调试需要确认这台设备能否用来运行程序。而Provisioning Profile就把这些信息全部打包在一起方便我们在调试和发布程序打包时使用这样我们只要在不同的情况下选择不同的profile文件就可以了。而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。 例如如下图所示一个用于Development的Provisioning Profile中包含了该Provisioning Profile对应的App ID可使用的证书和设备。这意味着使用这个Provisioning Profile打包程序必须拥有相应的证书并且是将App ID对应的程序运行到Devices中包含的设备上去。 ​ 如上所述在一台设备上运行应用程序的过程如下 与证书一样Provisioning Profile也分为Development和Distribution两种 注前面提到不同账户类型所能创建的证书种类不同显然Profile文件的种类是和你所能创建的证书种类相关的 Development (1年)Distribution (1年) In HouseAd HocApp Store In House 与Ad Hoc的不同之处在于In House没有设备数量限制而Ad Hoc是用来测试用的Ad Hoc的包只能运行在该账户内已登记的可用设备上显然是有最多100个设备的数量限制。所以这两种Provisioning Profile文件的区别就在于其中的设备限制不一样而已而他们所使用的Certificate是相同的。 开发/发布流程 了解了上面的概念再来看开发及发布流程就非常简单了而且相信你不用看教程也能一步步完成所有的操作了。 开发/真机调试流程 根据上面的介绍可以知道进行Development主要有以下几个步骤 申请证书加入设备生成Provisioning Profile设置Xcode Code Sign Identifer 事实上第三步通常是不需要的因为我们通常都是用Xcode生成和管理的iOS Team Provisioning Profile来进行开发因为它非常方便所以不需要自己手动生成Provisioning Profile。 iOS Team Provisioning Profile是第一次使用Xcode添加设备时Xcode自动生成的它包含了Xcode生成的一个Wildcard App ID*匹配所有应用程序账户里面所有的Devices和所有Development Certificates如下图所示。因此team中的所有成员都可以使用这个iOS Team Provisioning Profile在team中的所有设备上调试所有的应用程序。并且当有新设备添加进来时Xcode会更新这个文件。 发布流程 网上有很多关于发布App Store的流程我就不缀述了不过根据上面的概念介绍不管是App Store、In-House还是Ad-Hoc打包流程都是差不多的都包括了以下几个关键步骤 创建发布证书创建App ID创建对应的Provisioning Profile文件设备Bundle ID和App ID一致设置Xcode Code Sign Identifer选择合适的Profile和证书进行签名打包 2. WebDriverAgent 整体框架设计 GitHub的描述 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-vhdlWebDriverAgent span stylecolor:#0000ffis/span a WebDriver server implementation span stylecolor:#0000fffor/span iOS that can be used span stylecolor:#0000ffto/span remote control iOS devices. It allows you span stylecolor:#0000ffto/span launch kill applications, tap scroll views span stylecolor:#0000ffor/span confirm span stylecolor:#0000ffview/span presence span stylecolor:#0000ffon/span a screen. This makes it a perfect tool span stylecolor:#0000fffor/span application span stylecolor:#0000ffend/span-span stylecolor:#0000ffto/span-span stylecolor:#0000ffend/span testing span stylecolor:#0000ffor/span general purpose device automation. It works by linking XCTest.framework span stylecolor:#0000ffand/span calling Applespan stylecolor:#00b0e8s/span API span stylecolor:#0000ffto/span execute commands directly span stylecolor:#0000ffon/span a device. WebDriverAgent span stylecolor:#0000ffis/span developed span stylecolor:#0000ffand/span used at Facebook span stylecolor:#0000fffor/span span stylecolor:#0000ffend/span-span stylecolor:#0000ffto/span-span stylecolor:#0000ffend/span testing span stylecolor:#0000ffand/span span stylecolor:#0000ffis/span successfully adopted by Appium. /code/span/span WebDriverAgent在iOS端实现了一个WebDriverServer可用于远程控制iOS设备。它允许您启动和终止应用程序点击和滚动视图或确认屏幕上的视图状态。这使其成为应用端到端测试或通用设备自动化的完美工具。它通过链接XCTest.framework和调用Apple的API来直接在设备上执行命令。WebDriverAgent在Facebook上开发并用于端到端测试并被Appium成功采用。 特性 适用于设备和模拟器实现大部分WebDriver规范实现Mobile JSON Wire Protocol Spec的一部分USB支持设备具有友好用户界面的Inspector 端点用于检查当前设备状态易于开发因为它可以通过Xcode直接启动和调试尚不支持但与tvOS和OSX一起使用 WDA Client WDA Client是基于WebDriverAgent实现的WDA的客户端。 我们在 iOS 设备上启动了 WDA 的服务端。为了运行 Mac OS 上的脚本我们需要在 Mac OS 上安装 WDA 客户端。 facebook-wda 就是 WDA 的 Python 客户端库通过直接构造HTTP请求直接跟WebDriverAgent通信。 span stylecolor:#000000span stylebackground-color:#ffffffcode classlanguage-mipsasmspan stylecolor:#008000# 安装 WDA python 客户端/span pip3 span stylecolor:#0000ffinstall /span--pre facebook-wda /code/span/span 以下是我收集到的比较好的学习教程资源虽然不是什么很值钱的东西如果你刚好需要可以评论区留言【777】直接拿走就好了 各位想获取资料的朋友请点赞 评论 收藏三连 三连之后我会在评论区挨个私信发给你们~
http://www.zqtcl.cn/news/590723/

相关文章:

  • 知名建站的公司微信企业app手机下载安装
  • 鹤山做网站羊毛网站建设视频
  • 图书类网站开发的背景建筑培训机构
  • 外贸网站建设制作wordpress管理员页面404
  • 北郊网站建设app网站开发哪里有
  • 像素人物制作网站网站开发的话术
  • 网站关键词怎么优化排名wordpress电子商城模板
  • 电子商务网站建设与维护能赚多少钱成交型网站建设
  • 到国外做网站网站是怎么回事中国一级建造师网官网
  • 惠州网站建设哪家好网站对图片优化
  • 酒店网站建设报价详情wordpress表单留言
  • 58同城做公司网站怎修改在线葡京在线葡京
  • 家纺网站模板wordpress折叠菜单
  • 建设信用中国网站站群系统破解版
  • 百度怎么投放广告凡科网站可以做seo优化
  • 医院网站建设 不足好的手机网站建设公司
  • 简历上作品展示网站链接怎么做wordpress的登陆地址修改密码
  • 深圳做响应式网站公司公司网站开发费用放在什么科目
  • 网站页面上的悬浮窗怎么做简单好看的版面设计图
  • 我要在58上面做网站硬件开发和嵌入式的区别
  • 西安网站推广慧创新手怎么开网店
  • 做羞羞事视频网站网站策划书基本项目
  • 对网站建设的维护优秀设计网站推荐
  • 口红机网站怎么做wordpress 搭建个人网站
  • 黄金网站房地产网站建设意义
  • 百度网站联盟公司做网站计入那个科目
  • 越秀电子商务网站建设国外的ui设计思想网站
  • 网站关键词优化公司网站建设完成确认书
  • 企业微信网站怎么建设山东有哪些网络公司
  • 做任务领佣金的网站源码页面设计参评