大家好,今天来为大家解答App自动化测试:高级控制定位技巧这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
ActionChains 和 Actions 区别
ActionChains是Selenium WebDriver中的一个类,可以用来执行一系列操作,例如鼠标悬停、拖放、键盘按下等。
Actions是Appium中的一个类,用于执行手势和交互操作,例如点击、滑动、长按等。
虽然两者名称相似,但它们是针对不同的自动化测试环境而设计的。
ActionChains适合网页自动化测试,通过Selenium WebDriver控制浏览器执行各种交互操作,并提供一系列方法来模拟用户行为。
Actions适合移动应用的自动化测试,使用Appium控制设备或模拟器进行各种手势操作。
除了适合不同的自动化测试环境之外,ActionChains 和Actions 的用法和语法也略有不同。在Selenium WebDriver 中使用ActionChains 时,您可以链接方法来执行一系列操作,并使用Perform() 方法来触发操作的执行。在Appium中使用Actions时,需要创建一个TouchAction对象,使用它提供的方法来执行手势操作,并使用perform()方法来触发手势的执行。
Actions 用法
使用ActionChains自动化用户交互时,首先需要导入ActionChains类和其他相关模块,然后定义一个ActionChains实例并传入驱动程序。之后,可以通过定义输入源和特定操作来实现各种用户交互。
导入ActionChains类和其他模块来定义ActionChains实例’actions’,并传入驱动程序来定义输入源并定义执行动作的动作。
滑动解锁示例
安装手势密码锁定应用程序(TouchAction.apk)。打开App,点击【设置手势】即可完成手势操作(如图)
在实现手势滑动时,通常需要组合坐标,具体的坐标点可以通过设置设备的输入选项从界面中找到。
手势滑动路径如下图所示:
Python 版本
pythonclass testactionChins3360 def setup_class(self):设置启动参数caps={‘platformname’:’android’,’appium333660apppackage’: amsung.ui.f lashActivity ‘, ‘appium:noReset’: True, ‘appium:shouldTerminateApp’: True, } # 初始化驱动self.driver=webdriver.Remote(‘http://localhost:4723′, options=UiAutomator2Options().load_capability(caps)) # 设置隐式等待self.driver. implicitly_wait(15) defteartdown_class(self): # 退出应用self.driver.quit() def test_slide_to_unlock(self): # 点击设置手势self.driver.find_element(by=AppiumBy.ID, value=’cn. kmob. screenfingermovelock:id/patternTxt’).click() print(self.driver.get_window_size()) # 定义ActionChains 实例actions=ActionChains(self.driver) # 定义输入源actions.w3c_actions=ActionBuilder(self.driver, mouse=PointerInput (interaction .POINTER_TOUCH, ‘touch’)) # 定义动作pointer_down按下暂停释放release #需要实现3个点之间的滑动,A-B水平滑动B-C垂直滑动bounds=self.driver.find_element(AppiumBy.ID, ‘cn.kmob. screenfingermovelock:id/patternView’).get_attribute( ‘bounds’) actions.w3c_actions.pointer_action.move_to_location(204, 377) actions.w3c_actions.pointer_action.pointer_down() actions.w3c_actions.pointer_action.move_to_location(930, 373) # 暂停0.5 秒模拟两点之间的拖动actions.w3c_actions.pointer_action.pause(0.5) actions.w3c_actions.pointer_action.move_to_location(846, 1150) actions.w3c_actions.pointer_action.pause(0.5) actions.w3c_actions .pointer_action.release() # 执行动作actions .perform() # 获取【继续】按钮的可点击属性值result=self.driver.find_element(AppiumBy.ID, ‘cn.kmob.screenfingermovelock:id/btnTwo’).get_attribute( ‘ clickable’) # 断言[继续]按钮] 可点击断言结果==’true’
总结
操作使用滑动解锁示例
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/182819.html
用户评论
优雅的叶子
终于看到这篇文章了!一直卡在控件定位上,感觉App自动化测试超级难,现在有点思路了。
有16位网友表示赞同!
赋流云
这篇博客讲解的真清楚!我也在尝试用Android studio写自动化脚本,之前用的ID定位经常失效,这些高级技巧确实有帮助,我要试试AccessibilityNodeInfo这个方法。感谢博主!
有12位网友表示赞同!
巷口酒肆
说的很有道理,有时候单纯依靠控件ID和class name真的不是一套万全之法,各种异常情况可能导致定位失败,需要多掌握一些高级技巧应对!点赞!
有10位网友表示赞同!
莫飞霜
作为一个自动化测试新手,这篇博客的重点讲解非常清晰易懂,例如用图示来解释不同方法的优缺点,真是太棒了!希望以后博主能分享更多关于App自动化测试的实用技巧。
有6位网友表示赞同!
熏染
感觉有点深奥啊。。。我刚接触 App 自动化测试就遇到了各种难点,这篇文章讲得还是比较细节,让我暂时难以理解全部内容,需要再好好研究一下。
有18位网友表示赞同!
枫无痕
说句不好听的,这个高级定位技巧好像跟我的项目场景不太实用。我项目的App比较简单,只有简单的按钮和文本,用传统的ID定位就足够了…
有12位网友表示赞同!
别在我面前犯贱
这篇文章讲的太精妙了!给我打开了一扇新的门窗,原来这些方法是可以用来解决控件定位问题的,让我眼前一亮。
有17位网友表示赞同!
长裙绿衣
我尝试过AccessibilityNodeInfo这个方法,确实效率很高,但有时候会遇到兼容性问题,对不同版本的安卓设备来说效果也不一样,需要认真测试和调整。
有5位网友表示赞同!
龙卷风卷走爱情
自动化测试的难度确实很大,需要不断学习和实践,这篇文章总结了很多经验,对新手小白很有帮助!
有18位网友表示赞同!
一笑傾城゛
我更喜欢用图片定位来解决控件定位的问题,这样更加直观易懂,可以根据App界面上的元素进行定位,不需要记住ID或者class name。
有17位网友表示赞同!
哭花了素颜
有时候单纯依靠这些高级技巧还是不够稳妥,需要结合其他测试工具和策略才能确保测试的有效性和可靠性!
有13位网友表示赞同!
寻鱼水之欢
赞同博文中的观点,App开发越来越复杂,自动化测试也变得越来越重要,掌握一些先进的定位技巧是必不可少的。
有6位网友表示赞同!
刺心爱人i
实际操作中,还需要考虑脚本的运行效率和可维护性,不能光追求定位精度的极致,要找到一个平衡点!
有5位网友表示赞同!
巴黎盛开的樱花
对新手来说,这篇文章确实很有参考价值,但是对于有经验的人来说,这些技巧已经比较基础了,可以尝试研究更高级的定位方法或使用专用的自动化测试框架。
有17位网友表示赞同!
别伤我i
App自动化测试是一个不断更新迭代的领域,我们需要时刻关注新的技术和工具,不断学习和改进我们的技能!
有18位网友表示赞同!
孤街浪途
我觉得这篇文章虽然没有解决所有的问题,但至少打开了一扇窗,让我们对高阶定位技巧有了更深入的了解。期待以后博主继续分享更多关于 App 自动化测试的精益内容!
有13位网友表示赞同!