精华内容
下载资源
问答
  • 封装Swipe目的Appium的滑动API:Swipe(int start x,int start y,int end x,int y,duration)使用前首先得获取手机屏幕的分辨率,然后根据分辨率计算得出滑动的起始和终点坐标。封装后的swipe,只需调用对应的方法...

    一. 封装Swipe目的

    Appium的滑动API:Swipe(int start x,int start y,int end x,int y,duration)

    使用前首先得获取手机屏幕的分辨率,然后根据分辨率计算得出滑动的起始和终点坐标。

    封装后的swipe,只需调用对应的方法即可实现 向上/向下/向左/向右/斜向上 常规滑动屏幕操作。

    Appium的API,使用均依赖于webdriver的调用,必须先建立session连接才能实现swipe功能

    封装后的swipe,基于ADB command,只需手机与PC建立ADB连接即可实现swipe功能。

    Appium的API通过建立不同的session 实现同时操作多部手机

    封装后的swipe,直接通过传入手机 serial Number 即可实现同时操作多部手机。

    综上,封装后的swipe可应用于Appium自动化测试并独立于Appium,且可以实现多部手机同时运作的功能。

    二. Source Code

    # -*- coding: utf-8 -*-

    import os

    import sys

    import re

    def get_screen_size(*args):

    """Get size of window and return the size for swipe function

    args 作为可变参数 表示是否传入设备的ID

    """

    if not args:

    # 如果没有传入指定设备ID,执行以下ADB command,获取设备屏幕分辨率

    size_file = os.popen("adb shell dumpsys window displays").read()

    else:

    # 如果传入指定设备ID,执行以下ADB command,获取设备屏幕分辨率

    uid = args[0]

    size_file = os.popen("adb -s %s shell dumpsys window displays" % uid).read()

    if not size_file:

    # 获取设备分辨率失败

    print("Cannot get the resolution of screen, please check the ADB.")

    sys.exit()

    else:

    # 正则表达式匹配设备分辨率

    size_match = re.search(r"(\d+)x(\d+)", size_file)

    if not size_match:

    # 设备分辨率匹配失败

    print("Failed to match the screen size.")

    sys.exit()

    else:

    # 设备分辨率信息从字符串分割转换为二元元组

    size_screen = re.split(r"x", size_match.group())

    print(size_screen)

    # 字符串元素元组转换为整型元素列表

    size = [int(size_screen[0]), int(size_screen[1])]

    return size

    def swipe_up(*args, t=100, n=1):

    """Swipe device screen up in t milliseconds and repeat the operation n times

    t=100 作为命名关键字参数 表示默认的滑动时间为100ms 可自寻设计滑动时间

    n=1 作为命名关键字参数 表示默认的滑动次数为1次 可自寻设计滑动次数

    """

    size = get_screen_size(*args)

    x1 = size[0] * 0.5

    y1 = size[1] * 0.75

    x2 = size[0] * 0.5

    y2 = size[1] * 0.25

    for i in range(n):

    if not args:

    os.system("adb shell input swipe %f %f %f %f %d" % (x1, y1, x2, y2, t))

    else:

    uid = args[0]

    os.system("adb -s %s shell input swipe %f %f %f %f %d" % (uid, x1, y1, x2, y2, t))

    def swipe_down(*args, t=100, n=1):

    """Swipe device screen down in t milliseconds and repeat the operation n times"""

    size = get_screen_size(*args)

    x1 = size[0] * 0.5

    y1 = size[1] * 0.25

    x2 = size[0] * 0.5

    y2 = size[1] * 0.75

    for i in range(n):

    if not args:

    os.system("adb shell input swipe %f %f %f %f %d" % (x1, y1, x2, y2, t))

    else:

    uid = args[0]

    os.system("adb -s %s shell input swipe %f %f %f %f %d" % (uid, x1, y1, x2, y2, t))

    def swipe_left(*args, t=100, n=1):

    """Swipe device screen left in t milliseconds and repeat the operation n times"""

    size = get_screen_size(*args)

    x1 = size[0] * 0.95

    y1 = size[1] * 0.5

    x2 = size[0] * 0.05

    y2 = size[1] * 0.5

    for i in range(n):

    if not args:

    os.system("adb shell input swipe %f %f %f %f %d" % (x1, y1, x2, y2, t))

    else:

    uid = args[0]

    os.system("adb -s %s shell input swipe %f %f %f %f %d" % (uid, x1, y1, x2, y2, t))

    def swipe_right(*args, t=100, n=1):

    """Swipe device screen right in t milliseconds and repeat the operation n times"""

    size = get_screen_size(*args)

    x1 = size[0] * 0.05

    y1 = size[1] * 0.5

    x2 = size[0] * 0.95

    y2 = size[1] * 0.5

    for i in range(n):

    if not args:

    os.system("adb shell input swipe %f %f %f %f %d" % (x1, y1, x2, y2, t))

    else:

    uid = args[0]

    os.system("adb -s %s shell input swipe %f %f %f %f %d" % (uid, x1, y1, x2, y2, t))

    def swipe_oblique(*args, t=100, n=1):

    """Swipe device screen oblique in t milliseconds and repeat the operation n times"""

    size = get_screen_size(*args)

    x1 = size[0] * 0.05

    y1 = size[1] * 0.75

    x2 = size[0] * 0.95

    y2 = size[1] * 0.25

    for i in range(n):

    if not args:

    os.system("adb shell input swipe %f %f %f %f %d" % (x1, y1, x2, y2, t))

    else:

    uid = args[0]

    os.system("adb -s %s shell input swipe %f %f %f %f %d" % (uid, x1, y1, x2, y2, t))

    展开全文
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...

    前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:

    Swipe(int start x,int start y,int end x,int y,duration)

    解释:int start x-开始滑动的x坐标,

    int start y -开始滑动的y坐标。

    int end x -结束点x坐标,

    int end y -结束点y坐标。

    duration 滑动时间(默认5毫秒);

    由于swipe方法需要制定的是坐标,但是由于每个手机的分辨率不同,如果我们指定了一个固定的坐标,在其他手机上也不一定能适用,所以最好的办法就是通过获取手机屏幕的坐标来滑动,

    这样可以增加代码的复用性。

    以下是我的python代码:

    dr=webdriver.Remote("http://localhost:4725/wd/hub",desired_cups)

    #获得机器屏幕大小x,y

    def getSize():

    x = dr.get_window_size()['width']

    y = dr.get_window_size()['height']

    return (x, y)

    #屏幕向上滑动

    def swipeUp(t):

    l = getSize()

    x1 = int(l[0] * 0.5) #x坐标

    y1 = int(l[1] * 0.75) #起始y坐标

    y2 = int(l[1] * 0.25) #终点y坐标

    dr.swipe(x1, y1, x1, y2,t)

    简单解释一下:

    下图是屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程

    以下我将向上滑动、向下滑动、向左滑动和向右滑动整理了一下,并且实现他们的调用:

    分享完毕,希望能对大家有所帮助!

    展开全文
  • 1、swip:通过坐标控制屏幕的滚动def swipe(self, start_x, start_y, end_x, end_y, duration=None)封装使用方法:# 获得机器屏幕大小x,ydef getSize(driver):x = driver.get_window_size()['width']y = driver.get_...

    1、swip:通过坐标控制屏幕的滚动

    def swipe(self, start_x, start_y, end_x, end_y, duration=None)

    封装使用方法:

    # 获得机器屏幕大小x,y

    def getSize(driver):

    x = driver.get_window_size()['width']

    y = driver.get_window_size()['height']

    return (x, y)

    # 屏幕上下滑动

    def swipeDownUp(driver,x,y1,y2,t):

    s = getSize(driver)

    x1 = int(s[0] * x) # x坐标

    y1 = int(s[1] * y1) # 起始y坐标

    y2 = int(s[1] * y2) # 终点y坐标

    driver.swipe(x1, y1, x1, y2, t)

    # 屏幕左右滑动

    def swipRightLeft(driver,x1,x2,y1,t):

    s = getSize(driver)

    x1 = int(s[0] * x1)

    y1 = int(s[1] * y1)

    x2 = int(s[0] * x2)

    driver.swipe(x1, y1, x2, y1, t)

    2、scroll:屏幕从一个元素滑动到另一个元素

    def scroll(self, origin_el, destination_el, duration=None)

    示例方法:

    testButtons = driver.find_elements_by_id('XXX')

    driver.scroll(testButtons[3],testButtons[1])

    3、控制一个元素滑动到某个位置

    控制元素A在X轴上滑动:

    from appium.webdriver.common.touch_action import TouchAction

    swipElement = driver.find_element_by_id('XXX')

    #当前元素的坐标

    point = swipElement.location

    # 计算移动后的位置坐标

    pointX = point['x'] + driver.get_window_size()['width']*0.7

    pointY = point['y']

    TouchAction(driver).long_press(swipElement).move_to(x=pointX,y=pointY).release().perform()

    展开全文
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...

    前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:

    Swipe(int start x,int start y,int end x,int y,duration)

    解释:int start x-开始滑动的x坐标,

    int start y -开始滑动的y坐标。

    int end x -结束点x坐标,

    int end y -结束点y坐标。

    duration 滑动时间(默认5毫秒);

    由于swipe方法需要制定的是坐标,但是由于每个手机的分辨率不同,如果我们指定了一个固定的坐标,在其他手机上也不一定能适用,所以最好的办法就是通过获取手机屏幕的坐标来滑动,

    这样可以增加代码的复用性。

    以下是我的python代码:

    dr=webdriver.Remote("http://localhost:4725/wd/hub",desired_cups)

    #获得机器屏幕大小x,y

    defgetSize():

    x= dr.get_window_size()['width']

    y= dr.get_window_size()['height']return(x, y)#屏幕向上滑动

    defswipeUp(t):

    l=getSize()

    x1= int(l[0] * 0.5) #x坐标

    y1 = int(l[1] * 0.75) #起始y坐标

    y2 = int(l[1] * 0.25) #终点y坐标

    dr.swipe(x1, y1, x1, y2,t)

    简单解释一下:

    下图是屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程

    以下我将向上滑动、向下滑动、向左滑动和向右滑动整理了一下,并且实现他们的调用:

    #获得机器屏幕大小x,y

    def getSize():

    x = dr.get_window_size()['width']

    y = dr.get_window_size()['height']

    return (x, y)

    #屏幕向上滑动

    def swipeUp(t):

    l = getSize()

    x1 = int(l[0] * 0.5) #x坐标

    y1 = int(l[1] * 0.75) #起始y坐标

    y2 = int(l[1] * 0.25) #终点y坐标

    dr.swipe(x1, y1, x1, y2,t)

    #屏幕向下滑动

    def swipeDown(t):

    l = getSize()

    x1 = int(l[0] * 0.5) #x坐标

    y1 = int(l[1] * 0.25) #起始y坐标

    y2 = int(l[1] * 0.75) #终点y坐标

    dr.swipe(x1, y1, x1, y2,t)

    #屏幕向左滑动

    def swipLeft(t):

    l=getSize()

    x1=int(l[0]*0.75)

    y1=int(l[1]*0.5)

    x2=int(l[0]*0.05)

    dr.swipe(x1,y1,x2,y1,t)

    #屏幕向右滑动

    def swipRight(t):

    l=getSize()

    x1=int(l[0]*0.05)

    y1=int(l[1]*0.5)

    x2=int(l[0]*0.75)

    dr.swipe(x1,y1,x2,y1,t)

    #调用向左滑动

    swipLeft(1000)

    sleep(3)

    #调用向右滑动

    swipRight(1000)

    调用向上滑动

    swipeUp(1000)

    调用向下滑动

    swipeDown(1000)

    分享完毕,希望能对大家有所帮助!

    展开全文
  • 这里我们使用到的函数是swipe语法:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标, int start y -开始滑动的y坐标。 int end x -结束点x坐标, int end y -...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...
  • 查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。swipe(self, start_x, start_y, end_x, end_y, duration=None)Swipe ...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...
  • 手机屏幕从左上角开始为0,向右为x轴坐标,向下为y轴坐标。duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。 向下滑动实例 封装滑动方法,代码如...
  • 最近在学习appium自动化,对iOS手机进行滑动操作进行总结: 1、mobile:scroll;该方法在实际使用调用时,会滚动2次。执行时间很长。 向下滚动整个屏幕driver.execute_script('mobile: scroll', {'direction': '...
  • from:https://www.cnblogs.com/testhub/p/5949668.htmlSwipe(int start x,int start y,int endx,int y,duration)解释:int start x-开始滑动的x坐标,int start y-开始滑动的y坐标。...duration 滑动时间(默认...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍: Swipe(int start x,int start y,int end x,int y,duration) 解释:int start x-开始滑动的x坐标, int ...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍: Swipe(int start x,int start y,int end x,int y,duration) 解释:int start x-开始滑动的x坐标, int ...
  • 1、手机滑动-swip# FileName : Tmall_App.py# Author : Adil# DateTime : 2018/3/25 17:22# SoftWare : PyCharmfrom appium import webdrivercaps = {}caps['platformName'] = 'Android'caps['platformVersion'] = '...
  • 1、手机滑动-swipe查看源码Ctrl + 鼠标右键点击 driver.swipe()查看源码语法,起点和终点四个坐标参数。...向下滑动实例封装滑动方法,代码如下:2、点击手机屏幕坐标-tap使用场景:有时候定位元素的时候,你...
  • 1、手机滑动-swipe查看源码Ctrl + 鼠标右键点击 driver.swipe()查看源码语法,起点和终点四个坐标参数。...向下滑动实例封装滑动方法,代码如下:2、点击手机屏幕坐标-tap使用场景:有时候定位元素的时候,你...
  • Appium+Python【学习笔记】-模拟手机滑动操作(swipe) Appium 滑动API:Swipe(int start x,int start y,int end x,int y,duration) int start x-开始滑动的x坐标, int start y -开始滑动的y坐标。 int end x -...
  • 最近在学习appium自动化,对iOS手机进行滑动操作进行总结: 1、mobile:scroll 向下滚动整个屏幕 driver.execute_script('mobile: scroll', {'direction': 'down'}) 向上滚动整个屏幕 driver.execute_script('mobile...
  • 移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很...处理touch事件能跟踪到屏幕滑动的每根手指。以下是四种touch事件touchstart: //手指放到屏幕上时触发touchmove: //手指在屏幕上滑动式触发touchend: //手指...
  • 最近在学习appium自动化,对iOS手机进行滑动操作进行总结:1、mobile:scroll向下滚动整个屏幕driver.execute_script('mobile: scroll', {'direction': 'down'})向上滚动整个屏幕driver.execute_script('mobile: ...
  • 在我们进行appium自动化测试的过程中上下左右滑动屏幕时在所难免的。今天博主就分享一下在appium自动化测试场景中使用率超高的划动屏幕的操作吧。 前置条件:1.手机已经使用usb连接手机。 2.打开appium-desktop待测...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

python手机屏幕滑动

python 订阅