python+appium自动化测试-滑动到固定的位置停止

当前很多APP都存在滑动操作,但这些元素一般无法单独定位到,多为一个数组或列表,这边介绍了几种方法,使元素滑动到你想要的位置后停止。

一、scroll()方法

Appium 中webdriver提供scroll()方法来滚动页面,该方法只适用于屏幕上已经显示的两个元素,从一个元素滚动到另一个元素。若元素不存在当前屏幕或被遮挡,则无法使用该方法。

方法介绍:

  1. scroll(self, start_el, stop_el, duration=None):

  2. 参数:

  3. - start_el- 开始要滚动的元素

  4. - stop_el- 要滚动到的元素

  5. - 即从元素stop_el滚动至元素start_el

  6. - duration 即滚动的持续时间

 上栗子:使用scroll()方法实现从“2008”滑动到“2012”,即方向为向上滑动,将2012滑动到2008的位置。
在这里插入图片描述
具体代码如下:

  1. def scroll():

  2. stop_el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='2008']")

  3. start_el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='2012']")

  4. self.driver.scroll(start_el, stop_el)

注意:以上方法无法实现从2008滑动到2013,因为2013未显示在屏幕中,被遮挡了。

二、UiScrollable()方法

UiScrollable是UiCollection的子类,专门处理滚动时间,提供各种滚动方法,下面只介绍了滚动到固定的对象。

相关概念:

  • 步长:从一点到另一点使用的时间。步长越短滚动越快,反之步长越长滚动越慢。
  • 扫动次数:触发滚动的次数。

上栗子:使用上一个方法scroll()的栗子图片,实现从“2008”滑动到“2012”。

  1. def test():

  2. self.driver.find_element_by_android_uiautomator(

  3. 'new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().text("2012")).scrollToEnd(10,5)')

  4. # text("2012"):表示需要滑动的位置

  5. # scrollToEnd(10,5):以步长(速率)5滚动到列表底部,最多滚动10次。

注意:该方法会直接滑动到列表最底部或最顶部,在中间时比较不好判断,如果列表的数据比较长的话,建议不使用哦。 评论区有没有哪位大神,有好的方法来解决这个局限性,感谢!!

三、swipe()方法

之前已经有发布swipe()方法的封装类,具体位置: juejin.cn/post/691558…

上栗子:仍然以方法一的图片作为例子,当前的年份为2008,需要滑动或点击2020。

使用循环实现,具体实现方法为:

  • 写一个循环,循环中再做判断
  • 若查找到元素,则执行点击
  • 若未查找到元素,则做上滑操作,向上滑动列表
  • 若向上滑到列表最底部仍然未查找到数据,则判断当前是否处于列表最底部
  • 当前处于列表最底部,则做下滑操作,向下滑动列表
  1. def swipe():

  2. # 默认没找到元素

  3. is_find = False

  4. # 默认顺序查找,即上滑

  5. is_sequential_search = True

  6. while is_find is not True:

  7. try:

  8. self.driver.find_element_by_xpath("//android.widget.TextView[@text='1995']").click()

  9. is_find = True # 找到了,退出循环

  10. except NoSuchElementException:

  11. if is_sequential_search: # 顺序查找

  12. # 该方法调用已封装的向上滑动类

  13. self.slide.swipe_up(2500)

  14. # 所有年份,获取屏幕列表中最底部的一个年份的text值

  15. years = self.driver.find_elements_by_class_name("android.widget.TextView")

  16. years_text = years[9].text

  17. # 判断获取到的text值是否等于2021

  18. if years_text == "2021": # 到列表的最后一个,但没找到

  19. is_sequential_search = False # 转换为逆序查找,即下滑

  20. else:

  21. # 该方法调用已封装的向下滑动类

  22. self.slide.swipe_down_search(2500)

注意:scroll() 与swipe()的区别,swipe是可以根据自己需要设置滑动的距离,而scroll是根据页面中两个元素位置距离进行滑动。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python-Appium自动化测试是一种基于Python语言和Appium框架的自动化测试方法,用于测试移动应用程序的功能和性能。它可以模拟用户在移动设备上的操作,如点击、滑动、输入等,以验证应用程序的正确性和稳定性。同时,Python-Appium自动化测试还可以生成测试报告和日志,帮助开发人员快速定位和解决问题。 ### 回答2: Python-Appium自动化测试是使用Python开发语言与Appium工具结合实现的一种移动应用自动化测试方法。Appium是一个跨平台的开源自动化测试框架,可用于Android和iOS应用测试,同时它也支持多种编程语言,其中包括PythonPython作为一种易学易用的脚本语言,对于自动化测试方面来说,有着很好的应用场景。 Appium的优势在于它实现了"一次编,随处运行"的理念,即一套测试脚本可以同时运行在Android、iOS甚至是Windows平台的设备上,提高了测试效率和覆盖率,同时也减轻了测试人员的工作量。此外,Appium还具有很好的可扩展性和兼容性,可以支持多种测试框架的集成。 在Python-Appium自动化测试中,主要需要掌握Appium的API接口,通过Python脚本实现对应用的UI元素进行定位、控制、操作和验证等测试动作。通过使用Python测试用例,可以在测试过程中调用Appium的API接口,实现自动化测试,进而提高效率,减少测试成本。 总结起来,Python-Appium自动化测试是一项非常有意义和优越性的技能,能够帮助测试人员更加高效地完成移动应用自动化测试任务,更好地提升开发效率和质量。然而,在学习和应用Python-Appium自动化测试技术时,也需要充分考虑到应用的安全性和稳定性,以确保测试结果的准确性和可信度。 ### 回答3: Python-Appium自动化测试是使用Python编程语言和Appium测试框架来进行自动化测试的一种方法。Appium是一个开源的跨平台的移动应用自动化测试框架,可以实现在不同的移动操作系统(如iOS和Android)上进行测试。而Python是一个简单易学的编程语言,也是非常流行的测试工具之一。因此,使用Python-Appium自动化测试是一种非常强大且易于操作的自动化测试方法。 Python-Appium自动化测试的主要优势在于它可以提高测试效率和精度。由于测试人员不需要手动执行测试,他们可以通过编测试脚本来自动执行测试。这些脚本可以被重复使用,可以快速地测试不同的场景,并且可以在不同的设备和操作系统上进行测试。 另外,Python-Appium自动化测试还可以提高测试的精度。因为这种自动化测试方法是由计算机执行的,所以它不会因为人为疏忽或者错误而产生测试错误。它可以帮助测试人员减少任何可能的误差,并且可以帮助他们快速识别出与应用程序相关的问题,从而更快地修复这些问题。 总的来说,在Python-Appium自动化测试方面有很多的应用场景,它可以帮助测试人员和开发者快速且准确地识别出与应用程序相关的问题,从而帮助他们更快地修复这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值