Capabilities
capabilities是什么?
Desired Capabilities是一个键值对的组合,在Python里面是一个字典。客户端将这些键值对发送给appium服务器,告诉服务器怎么测试。desired Capabilities例子:
desired_caps = {} #字典
desired_caps['platformName'] = "Android" #设备版本号,需要测试的手机的操作系统
desired_caps['platformVersion'] = '22' #手机操作系统版本
desired_caps['deviceName'] = "7N3HPX159H051514" #使用手机的类型或模拟器的类型,adb devices获得
desired_caps['udid'] = "7N3HPX159H051514" #同上
#手机web应用自动化测试
desired_caps['browserName'] = '' #需要进行自动化测试的web浏览器,对APP应用进行测试的话至于空值。Chrome、Browser、Chromlum
'''
应用的包名,在参数中如果添加了应用的安装路径,就可以不用写包名和启动的activity参数
desired_caps['app'] = r'D:\test\test.apk' #被测试的APP在电脑的路径
'''
desired_caps['appPackage'] = 'com.thinkwu.live' #APP的package在uiautomator view或appium中可以获得
desired_caps['appActivity'] = '.ui.activity.InitActivity' #相当于APP的每个页面,appium里面可以获得
desired_caps['unicodeKeyboard'] = "True" #开启Unicode键盘
desired_caps['resetKeyboard'] = "True"
desired_caps['newCommandTimeout'] = 30 #设置命令超时时间,单位秒
'''混合应用:
正确的用appium测试微信h5的方法如下:
desired_caps['chromeOptions'] = {'androidProcess': 'com.tencent.mm:tools'}
'''
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
常用的Capabilities
公用的、Android专用、iOS专用的Capabilities: http://blog.csdn.net/jojoy_tester/article/details/72081905Capabilities封装使用
函数封装后可以多次调用,改变入参就能无数次适配了。当APP变化、测试手机变化、版本变化等等就需要修改程序里面的代码了,封装起来后使用不同的需求传入合适的参数就可以直接使用了。
Capabilities封装使用例子:
就是一个函数封装而已。。。
from appium import webdriver
def driver_app(platformVersion='23',deviceName='7N3HPX159H051514',udid='7N3HPX159H051514'):
desire_caps = {}
desire_caps['platformName'] = "Android"
desire_caps['platformVersion'] = platformVersion
desire_caps['deviceName'] = deviceName
desire_caps['udid'] = udid
desire_caps['appPackage'] = 'com.thinkwu.live'
desire_caps['appActivity'] = '.ui.activity.InitActivity'
desire_caps['unicodeKeyboard'] = "True" #使得支持Unicode字符
desire_caps['resetKeyboard'] = "True"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desire_caps)
return driver
if __name__ == "__main__":
driver = driver_app(platformVersion="22")
Unicode键盘设置
文本框(TextField)
在做安卓自动化中,desired Capabilities中有这么两句设置:
desire_caps['unicodeKeyboard'] = "True"
desire_caps['resetKeyboard'] = "True"
下面再学习总结一下:
默认情况下,iOS和Android的自动化工具(手机、模拟器)都不支持向输入框中输入非ASCII字符的。
iOS先不去研究了。跳过。
appium针对这个问题,怎么解决Android自动化问题呢?
通过下载安装一个特殊的键盘,Android可以支持Unicode字符,这个输入法允许文本通通过ASCII在appium和被测试应用之间进行同行。
所以需要设置:
unicodeKeyBoard 设置为True;如果要键盘设置在测试完成后回到原始状态,需要将resetKeyBoard也设置为True,否则appium测试结束后,appium的Unicode键盘仍然会被激活。
设置后,就可以通过send_keys()方法向输入框输入Unicode字符了。
备注:
这个Unicode键盘并非虚拟键盘,在界面上不会显示出来,要进行其他类型的测试必须切回其他输入法。
总的来说,就是在desired Capabilities中增加:上面两句设置。