经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
appium---App页面滑动 - 测试-安静
来源:cnblogs  作者:测试-安静  时间:2019/10/8 9:08:19  对本文有异议

  我们操作app的过程中都会进行页面滑动,那么这个过程通过python怎么实现呢?

 

如何滑动

大家都非常的清楚我们手动在app上是如何滑动的,然后自动化只是模仿了手工的方法去实现,我们通过一个图来分析

 

 

从上往下滑动的时候,我们通常会按(X1,Y1)这个坐标,然后往下进行滑动,一直滑到(X2,Y2)这个坐标

从下往上滑动的时候,我们会按(X2,Y2)这个坐标,往上进行滑动到(X1,Y1)这个坐标

当然了左往右进行滑动和从右往左进行滑动的思路都是一样的了。

swipe

swipe是appium模块中的一个方法,支持左右滑动和模拟点击的功能

  1. def swipe(self, start_x, start_y, end_x, end_y, duration=None):
  2.      # 从一个点滑动到另一个点,持续时间可选
  3. """Swipe from one point to another point, for an optional duration.
  4. :Args:
  5. - start_x - x-coordinate at which to start   开始的X轴
  6. - start_y - y-coordinate at which to start  开始的Y轴
  7. - end_x - x-coordinate at which to stop    结束的X轴
  8. - end_y - y-coordinate at which to stop    结束的Y轴
  9. - duration - (optional) time to take the swipe, in ms.   持续的时间,单位毫秒
  10. :Usage:
  11. driver.swipe(100, 100, 100, 400)
  12. """

我们从上面的图和swipe的源码中知道,滑动的最主要的参数就是坐标,那么我们如何通进行手机坐标查询呢?

查询坐标

打开指针位置

我们可以进入到手机开发者模式当中,然后打开指针位置,这样点击哪里就可以看到哪里的坐标。

 我们也可以通过python的脚本帮我们实现找到坐标的方法

get_window_size

  1. def get_window_size(self, windowHandle='current'):
  2. """
  3. Gets the width and height of the current window.
  4. # 获取屏幕的长和宽
  5. :Usage:
  6. driver.get_window_size()
  7. ""

 因为每个手机的坐标可能都不一样,这里我们可以通过先获取手机屏幕的长和宽,然后再次计算需要滑动的坐标位置

  1. # coding:utf-8
  2. from appium import webdriver
  3. import time
  4. desired_caps = {
  5. 'platformName': 'Android', # 测试版本
  6. 'deviceName': 'emulator-5554', # 设备名
  7. 'platformVersion': '5.1.1', # 系统版本
  8. 'appPackage': 'com.yipiao', #apk的包名
  9. 'appActivity': '.activity.LaunchActivity', # apk的launcherActivity
  10. }
  11. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  12. # 获取设备的宽度
  13. x=driver.get_window_size()['width']
  14. # 获取设备的长度
  15. y=driver.get_window_size()['height']
  16. print(x)
  17. print(y)

App滑动

我们通过智行火车票APP来实战操作下左右滑动,因为我们每个手机的页面不一样,可以通过算出来一个大概值进行匹配

向左滑动

  1. # coding:utf-8
  2. from appium import webdriver
  3. import time
  4. desired_caps = {
  5. 'platformName': 'Android', # 测试版本
  6. 'deviceName': 'emulator-5554', # 设备名
  7. 'platformVersion': '5.1.1', # 系统版本
  8. 'appPackage': 'com.yipiao', #apk的包名
  9. 'appActivity': '.activity.LaunchActivity', # apk的launcherActivity
  10. "noReset": True, # 不清空数据
  11. }
  12. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  13. time.sleep(6)
  14. driver.find_element_by_xpath('//*[@text="下次再说"]').click()
  15. l = driver.get_window_size()
  16. x1 = l['width'] * 0.75
  17. y1 = l['height'] * 0.5
  18. x2 = l['width'] * 0.25
  19. # 向左滑动
  20. driver.swipe(x1,y1,x2,y1,500)
  21. print('已经向左滑动了')

 

在这里安静就不一个个为大家演示了,小伙伴们可以自己尝试下

封装滑动方法

我们可以把滑动方法一个个封装起来,这样我们做app自动化测试的过程需要用到的时候就可以直接调用。

  1. def swipeUp(driver, t=500, n=1):
  2. '''向上滑动屏幕'''
  3. l = driver.get_window_size()
  4. x1 = l['width'] * 0.5
  5. y1 = l['height'] * 0.75
  6. y2 = l['height'] * 0.25
  7. for i in range(n):
  8. driver.swipe(x1, y1, x1, y2, t)
  9. def swipeDown(driver, t=500, n=1):
  10. '''向下滑动屏幕'''
  11. l = driver.get_window_size()
  12. x1 = l['width'] * 0.5
  13. y1 = l['height'] * 0.25
  14. y2 = l['height'] * 0.75
  15. for i in range(n):
  16. driver.swipe(x1, y1, x1, y2,t)
  17. def swipLeft(driver, t=500, n=1):
  18. '''向左滑动屏幕'''
  19. l = driver.get_window_size()
  20. x1 = l['width'] * 0.75
  21. y1 = l['height'] * 0.5
  22. x2 = l['width'] * 0.25
  23. for i in range(n):
  24. driver.swipe(x1, y1, x2, y1, t)
  25. def swipRight(driver, t=500, n=1):
  26. '''向右滑动屏幕'''
  27. l = driver.get_window_size()
  28. x1 = l['width'] * 0.25
  29. y1 = l['height'] * 0.5
  30. x2 = l['width'] * 0.75
  31. for i in range(n):
  32. driver.swipe(x1, y1, x2, y1, t)

 

 

感觉写的对您有帮助的话,点个关注,持续更新~~国庆快乐~~放假了也不要忘记学习哦

 

原文链接:http://www.cnblogs.com/qican/p/11609264.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号