基于Appium的ios自动化教程

  Appium作为一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App,它使用WebDriver协议驱动IOS,Android和Windows应用程序,本篇文章介绍实现ios自动化测试

01、Appium实现iOS自动化测试

01、启动应用

填写 capability信息

app 获取

uuid获取

点击Window---->Devices--->在右侧可查看到identifier identifier,即为我们获取到的iPhone 的uuid

02、元素获取

通过代码开启,pycharm编写

 
  1. from time import sleep

  2. from appium import webdriver

  3. caps = {}

  4. #平台版本

  5. caps["platformName"] = "iOS"

  6. # APP信息通过xcode

  7. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"

  8. #设备名称

  9. caps["deviceName"] = "iPhone X"

  10. #设备版本

  11. caps["platformVersion"] = "12.1"

  12. #uuid 通过xcode获取

  13. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'

  14. #创建driver对象

  15. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

  16. # 等待5s

  17. driver.implicitly_wait(5)

需求:第一个脚本,点击Action Sheets -- 点击 OK

 
  1. from time import sleep

  2. from appium import webdriver

  3. caps = {}

  4. # 平台版本

  5. caps["platformName"] = "iOS"

  6. # APP信息通过xcode

  7. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"

  8. #设备名称

  9. caps["deviceName"] = "iPhone X"

  10. #设备版本

  11. caps["platformVersion"] = "12.1"

  12. #uuid 通过xcode获取

  13. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'

  14. #创建driver对象

  15. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

  16. # 等待5s

  17. driver.implicitly_wait(5)

  18. #点击Action Sheets

  19. driver.find_element_by_xpath(**'(//XCUIElementTypeButton[@name="More Info"]) [1]'**).click()

  20. #点击ok

  21. driver.find_element_by_xpath(**'//XCUIElementTypeStaticText[@name="Okay / Cancel"]'**).click()

1、ios定位方法

  • ios_predicate
 
  1. iOS 的 UI 自动化中,使用原生支持的Predicate定位方式是最好,可支持元素的单个属性和多个属性定位,强烈推荐使用

  2. driver.find_element_by_ios_predicate(“value == ‘ClearEmail’”)

  3. driver.find_element_by_ios_predicate(“type == ‘’ AND value == ‘’)

  • accessibility_id
 
  1. 替代以前的name定位方式,在 iOS 上,主要使用元素的label或name(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。

  2. driver.find_element_by_accessibility_id(‘ClearEmail’)

  • xpath

由于 iOS 10开始使用的 XCUITest 框架原生不支持,定位速度很慢,所以官方现在不推荐大家使用,也有其他替代的定位方式可使用。

 
  1. 使用绝对路径定位

  2. driver.find_element_by_xpath(’/XCUIElementTypeApplication/XCUIElementTypeButton’)

  3. 使用相对路径定位:

  4. driver.find_element_by_xpath(’//XCUIElementTypeButton’)

  5. 通过元素的索引定位

  6. driver.find_element_by_xpath(’//XCUIElementTypeButton[index]’)

  7. 通过元素的属性定位

  8. driver.find_element_by_xpath(”//className[@value=‘ClearEmail’]")

  • iOSNsPredicateString
 
  1. 仅支持 iOS 10或以上,可支持元素的单个属性和多个属性定位,推荐使用。

  2. 一种属性:MobileBy.iOSNsPredicateString(“type == ‘XCUIElementTypeButton’”)

  3. 两种属性:MobileBy.iOSNsPredicateString(“type == ‘XCUIElementTypeButton’ AND label== ‘更多信息’”)

以上定位方式基本同Android一致,ios专项定位方式PredicateString需求:点击 search Bars -- 点击Default -- 点击输入框 --点击输入内容

2、pycharm设置默认执行器

代码实现:

 
  1. from appium import webdriver

  2. import time

  3. from selenium.webdriver.support.ui import WebDriverWait

  4. # from selenium import webdriver

  5. class TestDemo:

  6. def setup(self):

  7. caps = {}

  8. caps["platformName"] = "iOS"

  9. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"

  10. #

  11. # caps["automationName"] = "xcuitest"

  12. caps["deviceName"] = "iPhone X"

  13. caps["platformVersion"] = "12.1"

  14. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'

  15. caps['startIWDP'] = True

  16. self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

  17. self.driver.implicitly_wait(5)

  18. # 滑动方法

  19. def swipe_view(self):

  20. size = self.driver.get_window_size()

  21. self.driver.swipe(size['width'] * 0.5, size['height'] * 0.75,size['width'] * 0.75, size['height'] * 0.25, 3000)

  22. def test_search(self):

  23. self.swipe_view()

  24. 点击 search Bars

  25. self.driver.find_element_by_accessibility_id('Search Bars').click()

  26. # 点击Default

  27. self.driver.find_element_by_accessibility_id('Default').click()

  28. # ios 10 以上操作系统支持 type == "XCUIElementTypeSearchField"

  29. #点击输入框

  30. self.driver.find_element_by_ios_predicate('type == "XCUIElementTypeSearchField"').click()

  31. time.sleep(4)

  32. 点击输入内容

  33. self.driver.find_element_by_accessibility_id('L').click()

  34. time.sleep(4)

  35. self.driver.find_element_by_accessibility_id('g').click()

  36. time.sleep(4)

  37. print(self.driver.find_element_by_ios_predicate('value == "Lg"').text)

 如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

 最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值