iOS自动化测试

怀念夏天  金牌会员 | 2024-6-23 23:41:08 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 807|帖子 807|积分 2421

Appium + WDA

安装appium

   brew install appium
  编译运行WDA

Facebook/WebDriverAgent在iOS10以后已经被废弃,当前使用Appium下fork的WebDriverAgent,具体地点如下:
Appium/WebDriverAgent
下载并解压,打开.xproj,设置证书。
选择WebDriverAgentRunner,编译
执行proudct->Test安装在手机上,运行后手机会显示automation控制。
weditor

真机调试需要安装usbmuxd:
brew install usbmuxd,
自带了iproxy小工具,iproxy将装备上的端口映射到电脑上的某个端口,终端输入了iproxy 8100 8100 (端标语自取)
   iproxy 8100 8100
  然后浏览器打开链接:http://localhost:8100/status
   http://localhost:8300/status
{
value: {
build: {
version: “8.5.6”,
time: “Apr 25 2024 11:33:40”,
productBundleIdentifier: “com.facebook.WebDriverAgentRunner”
},
os: {
testmanagerdVersion: 65535,
name: “iOS”,
sdkVersion: “17.4”,
version: “17.4.1”
},
device: “iphone”,
ios: {
ip: “172.31.54.124”
},
message: “WebDriverAgent is ready to accept commands”,
state: “success”,
ready: true
},
sessionId: null
}
  执行inspector不会成功,因为appium的wda固然fork了Facebook但没有fork inspector。inspector失败缘故起因
   http://localhost:8300/inspector
  安装Facebook-wda
sudo pip3.12 install -U facebook-wda --break-system-packages
安装uiautomator2
sudo pip3.12 install uiautomator2 --break-system-packages
安装weditor
sudo pip3.12 install weditor --break-system-packages
安装完毕后,执行如下操纵
1WebDriverAgentRunner在Xcode 执行product->test,手机进入automation状态,非锁屏。
端口中继
iproxy 8100 8100
浏览器执行http://localhost:8100/status确认手机连接状态
运行weditor
python3.12 -m weditor
浏览器页面出现,注意选择iOS需要填写http://localhost:8100以确保连接成功

WDA编写指南

WDA的基础原理是通过webDriverAgentRunner在手机上启动监听,通过电脑iproxy监听端口8100,通过对接XCTest的框架和uiAutomator的框架获取页面的元素和坐标信息,然后相互通报指令和响应完成相干操纵。一个简单的应用测试案比方下:
  1. import wda
  2. wda.DEBUG = True
  3. wda.HTTP_TIMEOUT = 180.0
  4. wda.DEVICE_WAIT_TIMEOUT = 180.0
  5. d = wda.Client('http://localhost:8100')
  6. d.click(0.891, 0.924)
  7. d.click(0.176, 0.125)
  8. d.click(0.176, 0.522)
  9. d(label="login agree circle").click()
  10. d.xpath('//Window[1]/Other[2]/Other[1]/Other[1]/Other[1]/Other[1]/Other[2]/Other[1]/Other[1]/TextField[1]').set_text("138xxxxxxx")
  11. d.xpath('//SecureTextField').set_text("1xxxxxx")
  12. d.xpath('//Window[1]/Other[2]/Other[1]/Other[1]/Other[1]/Other[1]/Other[2]/Button[1]').click()
复制代码

具体相干的函数编写可以参考webdriveragent的官方文档
wda函数编写指南
也有其他大神写的相干文档
这里需要注意的是当前使用的是appium的wda,以是安装和设置等章节并不适用
idb安装

github idb地点
参考安装指令
brew tap facebook/fb
brew install idb-companion
Mac自带的python需要升级到python3
brew install python3
   注意最新版本为3.12.1,安装后会出现/usr/local/bin/pip3.12
  执行pip指令获取fb-idb
pip3.12 install fb-idb
   这里有大概会报错error: externally-managed-environment
  pip3.12 install fb-idb --break-system-packages
   这里在末了大概会出现错误
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: ‘/usr/local/protoc_compiler_template.py’
Consider using the --user option or check the permissions.
  需要使用sudo来解决
但假如第一次报错,需要先uninstall,再install
sudo pip3.12 uninstall fb-idb
sudo pip3.12 install fb-idb --break-system-packages
   基本所有错误会被解决,可以自由使用idb
  补充

一个有趣的基于wda的二次封装wda的二次封装

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表