基于Appium的ios自动化教程

亦凉 2023-10-08 15:08 19阅读 0赞

在这里插入图片描述
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. #平台版本
  6. caps["platformName"] = "iOS"
  7. # APP信息通过xcode
  8. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"
  9. #设备名称
  10. caps["deviceName"] = "iPhone X"
  11. #设备版本
  12. caps["platformVersion"] = "12.1"
  13. #uuid 通过xcode获取
  14. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'
  15. #创建driver对象
  16. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
  17. # 等待5s
  18. driver.implicitly_wait(5)

图片

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

  1. from time import sleep
  2. from appium import webdriver
  3. caps = {
  4. }
  5. # 平台版本
  6. caps["platformName"] = "iOS"
  7. # APP信息通过xcode
  8. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"
  9. #设备名称
  10. caps["deviceName"] = "iPhone X"
  11. #设备版本
  12. caps["platformVersion"] = "12.1"
  13. #uuid 通过xcode获取
  14. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'
  15. #创建driver对象
  16. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
  17. # 等待5s
  18. driver.implicitly_wait(5)
  19. #点击Action Sheets
  20. driver.find_element_by_xpath(**'(//XCUIElementTypeButton[@name="More Info"]) [1]'**).click()
  21. #点击ok
  22. 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 上,主要使用元素的labelname(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。
  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. }
  9. caps["platformName"] = "iOS"
  10. caps["app"] = "Users/hanxingyuan/Library/Developer/Xcode/DerivedData/UICatalog- elvxjsgcreylppcxqfmmfzwuujpo/Build/Products/Debug-iphonesimulator/UICatalog.app"
  11. #
  12. # caps["automationName"] = "xcuitest"
  13. caps["deviceName"] = "iPhone X"
  14. caps["platformVersion"] = "12.1"
  15. caps['uuid'] = '4A8743D2-501D-42B6-A20D-14901A5BE61B'
  16. caps['startIWDP'] = True
  17. self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
  18. self.driver.implicitly_wait(5)
  19. # 滑动方法
  20. def swipe_view(self):
  21. size = self.driver.get_window_size()
  22. self.driver.swipe(size['width'] * 0.5, size['height'] * 0.75,size['width'] * 0.75, size['height'] * 0.25, 3000)
  23. def test_search(self):
  24. self.swipe_view()
  25. 点击 search Bars
  26. self.driver.find_element_by_accessibility_id('Search Bars').click()
  27. # 点击Default
  28. self.driver.find_element_by_accessibility_id('Default').click()
  29. # ios 10 以上操作系统支持 type == "XCUIElementTypeSearchField"
  30. #点击输入框
  31. self.driver.find_element_by_ios_predicate('type == "XCUIElementTypeSearchField"').click()
  32. time.sleep(4)
  33. 点击输入内容
  34. self.driver.find_element_by_accessibility_id('L').click()
  35. time.sleep(4)
  36. self.driver.find_element_by_accessibility_id('g').click()
  37. time.sleep(4)
  38. print(self.driver.find_element_by_ios_predicate('value == "Lg"').text)

发表评论

表情:
评论列表 (有 0 条评论,19人围观)

还没有评论,来说两句吧...

相关阅读