【Python+Appium】开展自动化测试(八)swipe()滑动页面

女爷i 2023-10-07 21:39 114阅读 0赞

目录

前言

一,swipe方法介绍

二,重新封装

三,示例

写在最后


前言

app自动化测试过程中,经常会遇到滑动屏幕操作,appium框架的话我们可以使用webdriver提供的swipe()方法来对屏幕页面进行上滑、下滑、左滑、右滑操作。

一,swipe方法介绍

  • swipe()方法源码如下:

    ca31b2c426d4c601218e8238c2bd33ff.png

    swipe()方法的参数说明:

    start_x:起始横坐标

    start_y:起始纵坐标

    end_x:结束时横坐标

    end_y:结束时纵坐标

    duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适)

  • duration参数需要注意的是,在移动设备上滑动时间的快慢所形成的效果是不一样的。以今日头条APP首页上滑为例,同样的滑动距离,滑动较快则出现类似翻页的效果,而滑动较慢则是同一则新闻从起始位置滑动到结束位置。
  • 手机屏幕的坐标:以手机屏幕左上角为坐标中心(0, 0),向右话滑动则纵坐标不变,横坐标变大;向下滑动则横坐标不变,纵坐标变大。在uiautomatorviewer中可以元素左上角坐标与右下角的坐标,如下图中”视频”按钮

    f051b4ef2f96da5370764146279e27dc.png

  • 因为不同测试机屏幕的尺寸很可能有差异,所以一般不使用固定的的坐标来滑动屏幕,而是先获取测试机屏幕尺寸,再通过获取的手机屏幕尺寸来确定滑动的起始、结束坐标,这样在我们更换了测试手机后不需要更改方法。使用webdriver提供的get_window_size()方法可以获取屏幕尺寸(即屏幕右下角的坐标),方法如下:

    屏幕宽

    width = driver.get_window_size()[‘width’]

    屏幕高

    height = driver.get_window_size()[‘heigth’]

  • 滑动屏幕操作代码如下:

    屏幕从下向上滑动

    driver.swipe(width0.5, height0.9, width0.5, height0.1, 1000)

    屏幕从上向下滑动

    driver.swipe(width0.5, height0.1, width0.5, height0.9, 1000)

    屏幕从左向右滑动

    driver.swipe(width0.1, height0.5, width0.9, height0.5, 1000)

    屏幕从右向左滑动

    driver.swipe(width0.9, height0.5, width0.1, height0.5, 1000)

二,重新封装

我们还可以将滑动屏幕的操作封装成方法,方便后续调用

  1. # project/common/baseOpera.py
  2. class BaseOpera(object):
  3. '''
  4. 基础操作
  5. '''
  6. def __init__(self, driver):
  7. self.driver = driver
  8. self.duration = 1000
  9. @property
  10. def width(self):
  11. '''获取屏幕宽度'''
  12. return self.driver.get_window_size()['width']
  13. @property
  14. def height(self):
  15. '''获取屏幕高度'''
  16. return self.driver.get_window_size()['height']
  17. def swipe_to_left(self, base=0.1):
  18. '''从右向左滑动'''
  19. return self.driver.swipe(self.width*(1-base),
  20. self.height*0.5,
  21. self.width*base,
  22. self.height*0.5,
  23. self.duration
  24. )
  25. def swipe_to_right(self, base=0.1):
  26. '''从左向右滑动'''
  27. return self.driver.swipe(self.width*base,
  28. self.height*0.5,
  29. self.width*(1-base),
  30. self.height*0.5,
  31. self.duration
  32. )
  33. def swipe_to_top(self, base=0.9):
  34. '''从下向上滑动'''
  35. return self.driver.swipe(self.width*0.5,
  36. self.height*base,
  37. self.width*0.5,
  38. self.height*(1-base),
  39. self.duration
  40. )
  41. def swipe_to_bottom(self, base=0.9):
  42. '''从上向下滑动'''
  43. return self.driver.swipe(self.width*0.5,
  44. self.height*(1-base),
  45. self.width*0.5,
  46. self.height*base,
  47. self.duration
  48. )

三,示例

调用baseOpera.py模块中的滑动方法,向上滑动查看今日头条首页新闻,简单示意如下:

  1. from appium import webdriver
  2. from common.baseOpera import BaseOpera
  3. def android_driver():
  4. desired_caps = {
  5. "platformName": "Android",
  6. "platformVersion": "10",
  7. "deviceName": "PCT_AL10",
  8. "appPackage": "com.ss.android.article.news",
  9. "appActivity": ".activity.MainActivity",
  10. "automationName": "uiautomator2",
  11. "unicodeKeyboard": True,
  12. "resetKeyboard": True,
  13. }
  14. # 启动app
  15. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  16. return driver
  17. def watch_news():
  18. # 向上滑动今日头条首页
  19. driver = android_driver()
  20. bo = BaseOpera(driver)
  21. bo.swipe_to_top()
  22. if __name__ == '__main__':
  23. watch_new()

写在最后

最后再唠唠一句,如果想以测试为长期发展职业目标,是需要时刻保持学习的,要使自己具备竞争力,无论你现在工作几年,只要行动起来,你就已经占优势了,好啦就到这里了,祝大家2022年能升职加薪,没入职的就早日拿到心仪公司的offer,事事顺遂。

发表评论

表情:
评论列表 (有 0 条评论,114人围观)

还没有评论,来说两句吧...

相关阅读