用Xcode打开目录下的WebDriverAgent.xcodeproj,对于WebDriverAgentLib 和 WebDriverAgentRunner,勾选“Automatically manage signing”,把Team改成公司的,Bundle Identifier改成公司的证书可以接受的名字,具体可以参考官方文档操作,不懂的找开发同学协助。
[attach]109000[/attach]
然后就可以把WebDriverAgentLib和WebDriverAgentRunner都编译到真机运行一下了。正常来说,会在桌面生成一个没图标的WebDriverAgentRunner,点开之后不会有什么反应,这就对了。
终于把环境搭好了,感动啊。
写测试脚本
1. Appium server capabilities
要让App跑起来,还需要了解Appium server capabilities,它告诉Appium服务器很多信息,例如开哪个App、手机的系统/版本、在哪台设备上跑(真机还是模拟器等)等。
给出我用到的一些参数(in Python),其他capabilities请参考官方文档。
- # -*- coding: utf-8 -*-
-
- from time import sleep
- from appium import webdriver
-
- desired_caps = {}
- desired_caps['automationName'] = 'XCUITest' # Xcode8.2以上无UIAutomation,需使用XCUITest
- desired_caps['platformName'] = 'iOS'
- desired_caps['platformVersion'] = '10.3.2'
- desired_caps['deviceName'] = 'iPhone 7 Plus'
- desired_caps['bundleId'] = '需要启动的bundle id, 去问开发者'
- desired_caps['udid'] = '真机的udid 可在Xcode或iTunes里查看'
- desired_caps['newCommandTimeout'] = 3600 # 1 hour
-
- # 打开Appium服务器,start server后,尝试启动被测App
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
- sleep(60)
- driver.quit()
复制代码如果能跑起来,就是正常的,不然看一下报什么错。
2. Inspector
能跑起来只是第一步,更重要的是如何定位元素。
Inspector的使用方法很简单,之前运行driver = webdriver.Remote(‘
http://127.0.0.1:4723/wd/hub’, desired_caps)之后,连接就已经建立好了,只需在浏览器进入http://localhost:8100/inspector即可,之后就可以使用熟悉的driver.find_element_by_xxx方法来定位元素啦。。
[attach]109001[/attach]
后记
Selenium的坑
后来又遇到了一点坑,例如使用send_keys方法时,报
- Message: Parameters were incorrect. We wanted {“required”:[“value”]} and you sent [“text”,”sessionId”,”id”,”value”]
复制代码错误,google了一下发现是selenium新版导致的问题,降级后解决:
- pip uninstall selenium
- pip install selenium==3.3.1
复制代码手势操作
由于XCUI的原因,之前的一些手势操作如swipe、pinch、TouchAction等都不能用了,可以参考这篇官方文档,使用driver.execute_script方法代替。如
- driver.execute_script('mobile: scroll', {'direction': 'down'}) # 向下滚动
- driver.execute_script('mobile: dragFromToForDuration', {'duration': 0, 'fromX': 374, 'fromY': 115, 'toX': 200, 'toY': 100}) # 从右往左拖
复制代码对于直接用坐标的,还要注意逻辑分辨率的问题,如iPhone 7 Plus的逻辑分辨率是414×736。
最后
刚接触iOS的Appium,之后肯定还会遇到问题,会继续更新本文。
更新,最近更新到了Appium Desktop 1.1,里面带了1.6.5的Appium,使用起来暂时未发现明显区别。
附上一些参考: