app自动化测试4---desired capabilities

来源:互联网 发布:什么软件买东西便宜 编辑:程序博客网 时间:2024/06/18 07:13

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/72081905

Capabilities封装使用

函数封装后可以多次调用,改变入参就能无数次适配了。
当APP变化、测试手机变化、版本变化等等就需要修改程序里面的代码了,封装起来后使用不同的需求传入合适的参数就可以直接使用了。

Capabilities封装使用例子:

就是一个函数封装而已。。。

from appium import webdriverdef 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 driverif __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中增加:上面两句设置。