Appium:使用真机进行ios自动化测试(最新适用!Mac M2和Xcode版本)

以下是我根据查询到其他资料而编写,但是因为版本都过于老旧,但是系统和软件却一直更新迭代,所以以下是我又查找资料编写的最新方法,亲测有效!

一、运行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

我之前下载过低版本WebdriverAgent,但是配置完运行的时候就报错,具体好像是因为不支持Framework,需要构建XCFramework,但是查询之后这个办法很麻烦,所以尝试重新下载新的WebdriverAgent,然后查到IOS自动化需要下载WebDriverAgent到我们的appium环境下进行编译。现在因为ios的更新版本很高,所以老的Facebook中的webDriverAgent已经不更新维护了。对于测试更高版本的ios系统(12以上),如果你在facebook的github下载进行替换是不会支持的。以后去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()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值