|
Appium是移动端自动化测试非常有力的工具,那么对于在鸿蒙设备上自动化测试鸿蒙应用的支持情况如何呢?让我们一起实践看看吧。本文适用于有基础的appium安卓自动化测试经验的读者。appium连接首先在连接的初始化设置上,与Android对比有少许区别,下图这样配置可以成功连接操作鸿蒙设备和鸿蒙应用。classBaseTests(unittest.TestCase)classmethoddefsetUpClass(cls):cls.desired_caps=initDevices()uninstallApp(cls.desired_caps['udid'],cls.PACKAGE_NAME)installApp(cls.desired_caps['udid'],cls.apk_path)cls.desired_caps['appPackage']=cls.PACKAGE_NAMEcls.desired_caps['platformName']='Android'cls.desired_caps['noReset']=Truecls.desired_caps['appActivity']='MainAbilityShellActivity'#dumpsysactivity|grep-irun|grep360cls.desired_caps['newCommandTimeout']="2000"cls.driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',cls.desired_caps)cls.driver.implicitly_wait(10)PACKAGE_NAME:填写被测应用项目config.json下的bundleNameapk_path:被测鸿蒙应用安装文件xxx.hap的路径。注意填写在这里只是记录路径,appium不支持安装.hap包platformName:可以继续填写AndoridappActivity:即启动打开的页面,可以通过dumpsys activity获取安装和卸载.hap包在鸿蒙设备上安装或卸载鸿蒙应用的.hap包,则需要用到hdc命令。HDC(OpenHarmony Device Connector) 是为开发人员提供的用于设备连接调试的命令行工具,pc端开发机使用命令行工具hdc_std(为方便起见,下文统称hdc),该工具支持部署在Windows/Linux/Mac等系统与OpenHarmony\HarmonyOS设备(或模拟器)进行连接调试通信。如果你熟悉Android开发,那么一定对adb不会陌生。有关hdc的内容,详见:https://developer.huawei.com/consumer/cn/forum/topic/0201763247640210925fid=0103702273237520029hdc支持的命令有:HarmonyOSSDK的toolchains文件夹下 有一个hdc.exe,把它的路径加入到系统环境变量PATH中,就可以在任意位置调用它了。这里我们在自动化测试脚本中利用它来安装和卸载鸿蒙的.hap文件。definstallApp(serialNum,packageName):try:if"Success"insubprocess.check_output("hdc-t{}appinstall{}".format(serialNum,packageName),shell=True):print(u"安装成功")returnTrueelse:print(u"安装失败")returnFalseexcept:print(u"安装失败")returnFalsedefuninstallApp(serialNum,packageName):try:if"Success"insubprocess.check_output("hdc-t{}appuninstall{}".format(serialNum,packageName)):print(u"卸载成功")returnTrueelse:print(u"未安装该应用")except:pass关于如何打包一个签名的可安装到真机的.hap包,可参考https://baijiahao.baidu.com/sid=1718025528193522223&wfr=spider&for=pc元素定位1.通过id定位。注意对于Android应用我们之前是这样使用:self.driver.find_element_by_id(BaseTests.PACKAGE_NAME+":id/"+id).click()而对于鸿蒙应用,则需要这样使用,参数直接填写id即可:self.driver.find_element_by_id(id).click()#单击按键self.driver.find_element_by_id("Id_text_field").send_keys("hello123")#输入框输入2. 通过Name定位appium版本在1.5以后就不再支持ByName的定位,在之后的版本如何支持ByName定位,适用于安卓,同样适用于鸿蒙。在使用appium1.5之后的版本时,当我们直接使用ByName方式去查找控件时,一定出现这个错误rg.openqa.selenium.InvalidSelectorExceptionocatorStrategy'name'isnotsupportedforthissession通过修改appium源码解决问题,修改方法如下:在本地找到Appium路径下的driver.js文件,在下图这行代码加上“name”属性,修改后保存,重新启动appium服务即可。this.locatorStrategies=['xpath','id','classname','accessibilityid','-androiduiautomator','name'];这样就可以通过name定位鸿蒙app的元素了:self.driver.find_element_by_name("Flush").click()获取日志HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。在测试Android设备时,我们可以通过driver.get_log(“logcat”)获取logcat日志。如果直接传入参数“hilog”显然是不能捕获鸿蒙的hilog日志的,因为appium不支持,会出现如下错误:需要使用hdc hilog命令获取日志,可参考:order='hdchilog'pi=subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)foriiniter(pi.stdout.readline,'b'):print(i)其它常用操作,如self.driver.close_app()self.driver.launch_app()self.driver.hide_keyboard()self.driver.background_app(5)……,可正常使用。所以对于应用appium测试鸿蒙设备上的鸿蒙应用,能用之前Android使用的方法的,则继续使用,能用adb完成的也可继续用adb实现。不能实现的操作,则需要我们根据鸿蒙的特性和提供的相应开发工具去解决。兼容性测试现在部分真机平台还不支持上传和安装.hap包,或者支持的话需要添加真机设备uid至证书才能安装。可以选择在这个官方地址https://cn.devecostudio.huawei.com/console/testservice/remote 进行真机租用,不需要修改证书和添加uid,直接上传我们的.hap包即可安装,非常方便。可满足初步的兼容性测试需求。以上是在鸿蒙应用自动化测试方面的初步实践,欢迎大家留言讨论。参考文献https://developer.harmonyos.com/https://os.51cto.com/article/681159.html
|
|