ios自动化测试流程
一、运行iOS程序到真机
1. 在Xcode中登录自己的Apple ID

2. 打开自己的项目,配置开发者信息

3. 选择要运行的程序和设备
这里我选择我的iphone11

4. 快捷键 command+r 运行
运行前一定要选择和自己手机相适配的系统版本,我这里选择的是iOS15.3

可以看到该app已经出现了,但是他又会报一个错,could not launch “test” ,接下来进入下一步。
5. 在手机中进入 设置-通用-设备管理-自己Apple ID-信任程序
6. 重新 command+r 运行
二、配置WebdriverAgent
1. 下载WebdriverAgent
去appium下载WebdriverAgent最新的就行。最新版本的直接按下方步骤配置执行就可以,不会出现其他问题。GitHub - appium/WebDriverAgent: A WebDriver server for iOS and tvOS
2.进入到下载的WebdriverAgent项目下
3. 启动WebdriverAgent.xcodeproj
4. 配置WebdriverAgentLib 的开发者信息(报错不用管)

5. 同上配置WebdriverAgentRunner 的开发者信息(报错不用管)
6. 同上配置IntegrationApp 的开发者信息(报错不用管)
7. 针对报错信息 修改WebdriverAgentRunner 的 Product Bundle Identifier

修改为:

8. 修改IntegrationApp 的 Product Bundle Identifier

9. 数据线连接真机
10. 选择将要运行的 WebdriverAgentRunner 和真机设备

11. 使用 command+u 运行
运行后他可能会一直提示输密码,解决办法:codesign 想要访问您的钥匙串中的密钥
- 稍等之后会在log中出来一个url地址
![]()
- 在浏览器中打开这个地址,如果显示一串json数据即为正确连接手机
- 并且真机会多一个程序
11. 将配置好的WebdriverAgent 项目替换到appium 的WebdriverAgent 项目
- 打开finder
- 快捷键command+shift+g
- 输入路径
- 回车
- 将旧项目换个名字当作备份
- 将配置好的项目放在这个目录上
三、运行自动化脚本
1. 修改对应的platformName、platformVersion、deviceName
2. 查看udid、app并增加为启动参数
3. 运行即可
from appium import webdriver from selenium.webdriver.common.by import By desired_caps = { 'platformName': 'ios', # 被测手机是iphone 'platformVersion': '14.1', # 手机版本 'deviceName': 'iphone 8', # 设备名,安卓手机可以随意填写 'udid': '28c2c7e23a7338abb3986c040f5822e9992b6857', 'app': 'tv.danmaku.bilianime' # ios需要 } # 连接Appium Server,初始化自动化环境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 设置缺省等待时间 driver.implicitly_wait(5) # 如果有`青少年保护`界面,点击`我知道了` iknow = driver.find_elements(By.ID, "text3") if iknow: iknow.click() # 根据id定位搜索位置框,点击 driver.find_element('xpath', '//XCUIElementTypeButton[@name="搜索栏"]').click() # 根据id定位搜索输入框,点击 sbox = driver.find_element('xpath', '//XCUIElementTypeTextField[@value="罗翔"]') sbox.send_keys('白月黑羽') # 输入回车键,确定搜索 driver.find_element('xpath', '//XCUIElementTypeStaticText[@name="搜索"]').click() # 选择(定位)所有视频标题 eles = driver.find_elements('xpath', '//XCUIElementTypeStaticText[contains(@name,"白月黑羽")]') for ele in eles: # 打印标题 print(ele.text) input('**** Press to quit..') driver.quit()
复制链接:https://blog.csdn.net/qq_33480558/article/details/126292886?ops_request_misc=&request_id=&biz_id=102&utm_term=ios%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E6%B5%81%E7%A8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-126292886.142^v76^insert_down38,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

浙公网安备 33010602011771号