美文网首页
appium---App页面滑动

appium---App页面滑动

作者: 蜀山客e | 来源:发表于2020-09-09 13:54 被阅读0次

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

如何滑动

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


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

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

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

swipe

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

 def swipe(self, start_x, start_y, end_x, end_y, duration=None):
     # 从一个点滑动到另一个点,持续时间可选
        """Swipe from one point to another point, for an optional duration.

        :Args:
         - start_x - x-coordinate at which to start   开始的X轴
         - start_y - y-coordinate at which to start  开始的Y轴
         - end_x - x-coordinate at which to stop    结束的X轴
         - end_y - y-coordinate at which to stop    结束的Y轴
         - duration - (optional) time to take the swipe, in ms.   持续的时间,单位毫秒

        :Usage:
            driver.swipe(100, 100, 100, 400)
        """

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

查询坐标

打开指针位置

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

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

get_window_size

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

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

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

App滑动

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

向左滑动

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

封装滑动方法

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

def swipeUp(driver, t=500, n=1):
    '''向上滑动屏幕'''
    l = driver.get_window_size()
    x1 = l['width'] * 0.5     
    y1 = l['height'] * 0.75   
    y2 = l['height'] * 0.25   
    for i in range(n):
        driver.swipe(x1, y1, x1, y2, t)

def swipeDown(driver, t=500, n=1):
    '''向下滑动屏幕'''
    l = driver.get_window_size()
    x1 = l['width'] * 0.5        
    y1 = l['height'] * 0.25       
    y2 = l['height'] * 0.75       
    for i in range(n):
        driver.swipe(x1, y1, x1, y2,t)

def swipLeft(driver, t=500, n=1):
    '''向左滑动屏幕'''
    l = driver.get_window_size()
    x1 = l['width'] * 0.75
    y1 = l['height'] * 0.5
    x2 = l['width'] * 0.25
    for i in range(n):
        driver.swipe(x1, y1, x2, y1, t)

def swipRight(driver, t=500, n=1):
    '''向右滑动屏幕'''
    l = driver.get_window_size()
    x1 = l['width'] * 0.25
    y1 = l['height'] * 0.5
    x2 = l['width'] * 0.75
    for i in range(n):
        driver.swipe(x1, y1, x2, y1, t)

感觉写的对您有帮助的话,点赞关注,持续更新~~642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

相关文章

  • appium---App页面滑动

    我们操作app的过程中都会进行页面滑动,那么这个过程通过python怎么实现呢? 如何滑动 大家都非常的清楚我们手...

  • Android 动画套路

    类似于ViewPager的滑动效果 拖动页面,控件会跟着滑动 放开页面,页面会自动滑动到最中间 代码分析 Line...

  • react native 页面布局完成,但是无法滑动页面

    react native 要实现页面滑动,需要添加ScrollView标签,否则无法滑动页面,页面内容显示不全 这...

  • Axure原型设计丨页面滑动效果

    在原型展示时,有些页面过长,需要可以上下滑动,如何让页面能够拖动鼠标实现上下滑动? 可直接点击链接查看页面滑动效果...

  • 微信小程序弹出框时底部页面滑动

    在弹框生成海报的时候,真机上滑动页面会导致底部页面滑动,海报浮在最上层(其它页面输入手机号的时候页面滑动手机号也会...

  • 2021-03-04

    移动的端常见问题 ios滑动不流畅 上下滑动页面会产生卡顿,手指离开页面,页面立即停止运动。整体表现就是滑动不流畅...

  • #自定义弹出框页面滑动问题

    在main.js中设置全局函数 在页面使用时: 禁止主页面滑动 this.noScroll() 主页面可滑动 th...

  • A-->B跳转代理顺序

    从B页面滑动返回A,滑动不到一半松开:

  • 微信小程序典型案例

    1.左右滑动切换页面 wxml js 2.轮播图 wxml js 3.页面随着顶部点击或者滑动切换页面 wxml ...

  • 设计观察04-页面滑动时重要信息一直展示

    京东安卓客户端确认订单页面,当向下滑动页面时,地址栏在页面底部用提示的方式再次展示。 向下滑动后页面

网友评论

      本文标题:appium---App页面滑动

      本文链接:https://www.haomeiwen.com/subject/oxyeektx.html