精华内容
下载资源
问答
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是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()

    展开全文
  • 查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。swipe(self, start_x, start_y, end_x, end_y, duration=None)Swipe ...

    swipe介绍

    1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。

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

    Swipe from one point to another point, for an optional duration.

    从一个点滑动到另外一个点,duration是持续时间

    :Args:

    - start_x - 开始滑动的x坐标

    - start_y - 开始滑动的y坐标

    - end_x - 结束点x坐标

    - end_y - 结束点y坐标

    - duration - 持续时间,单位毫秒

    :Usage:

    driver.swipe(100, 100, 100, 400)

    2.手机从左上角开始为0,横着的是x轴,竖着的是y轴

    获取坐标

    1.由于每个手机屏幕的分辨率不一样,所以同一个元素在不同手机上的坐标也是不一样的,滑动的时候坐标不能写死了。可以先获取屏幕的宽和高,再通过比例去计算。

    # coding:utf-8

    from appium import webdriver

    desired_caps = {

    'platformName': 'Android',

    'deviceName': '30d4e606',

    'platformVersion': '4.4.2',

    # apk包名

    'appPackage': 'com.taobao.taobao',

    # apk的launcherActivity

    'appActivity': 'com.taobao.tao.welcome.Welcome'

    }

    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    # 获取屏幕的size

    size = driver.get_window_size()

    print(size)

    # 屏幕宽度width

    print(size['width'])

    # 屏幕高度width

    print(size['height'])

    2.运行结果:

    {u'width': 720, u'height': 1280}

    720

    1280

    封装滑动方法

    1.把上下左右四种常用的滑动方法封装,这样以后想滑动屏幕时候就能直接调用了

    参数1:driver

    参数2:t是持续时间

    参数3:滑动次数

    2.案例参考

    # coding:utf-8

    from appium import webdriver

    from time import sleep

    desired_caps = {

    'platformName': 'Android',

    'deviceName': '30d4e606',

    'platformVersion': '4.4.2',

    # apk包名

    'appPackage': 'com.taobao.taobao',

    # apk的launcherActivity

    'appActivity': 'com.taobao.tao.welcome.Welcome'

    }

    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    def swipeUp(driver, t=500, n=1):

    '''向上滑动屏幕'''

    l = driver.get_window_size()

    x1 = l['width'] * 0.5 # x坐标

    y1 = l['height'] * 0.75 # 起始y坐标

    y2 = l['height'] * 0.25 # 终点y坐标

    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 # x坐标

    y1 = l['height'] * 0.25 # 起始y坐标

    y2 = l['height'] * 0.75 # 终点y坐标

    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)

    if __name__ == "__main__":

    print(driver.get_window_size())

    sleep(5)

    swipLeft(driver, n=2)

    sleep(2)

    swipRight(driver, n=2)

    在学习过程中有遇到疑问的,可以appium+python QQ群交流:330467341

    展开全文
  • 封装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 ...
  • 最近在学习appium自动化,对iOS手机进行滑动操作进行总结: 1、mobile:scroll;该方法在实际使用调用时,会滚动2次。执行时间很长。 向下滚动整个屏幕driver.execute_script('mobile: scroll', {'direction': '...
  • 这里我们使用到的函数是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 ...
  • 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 滑动时间(默认...
  • 1、手机滑动-swip# FileName : Tmall_App.py# Author : Adil# DateTime : 2018/3/25 17:22# SoftWare : PyCharmfrom appium import webdrivercaps = {}caps['platformName'] = 'Android'caps['platformVersion'] = '...
  • 手机屏幕从左上角开始为0,向右为x轴坐标,向下为y轴坐标。duration是滑动屏幕持续的时间,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适。 向下滑动实例 封装滑动方法,代码如...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍:Swipe(int start x,int start y,int end x,int y,duration)解释:int start x-开始滑动的x坐标,int start y ...
  • 1、手机滑动-swipe查看源码Ctrl + 鼠标右键点击 driver.swipe()查看源码语法,起点和终点四个坐标参数。...向下滑动实例封装滑动方法,代码如下:2、点击手机屏幕坐标-tap使用场景:有时候定位元素的时候,你...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍: Swipe(int start x,int start y,int end x,int y,duration) 解释:int start x-开始滑动的x坐标, int ...
  • 1、手机滑动-swipe查看源码Ctrl + 鼠标右键点击 driver.swipe()查看源码语法,起点和终点四个坐标参数。...向下滑动实例封装滑动方法,代码如下:2、点击手机屏幕坐标-tap使用场景:有时候定位元素的时候,你...
  • 前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍: Swipe(int start x,int start y,int end x,int y,duration) 解释:int start x-开始滑动的x坐标, int ...
  • 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 -...
  • 之前一直在搞android的自动化,滑动操作一直都用swipe(),比如:he1 = int(dr.get_window_size()['height'] * 0.8)he2 = int(dr.get_window_size()['height'] * 0.2)wd1 = int(dr.get_window_size()['width'] * 0.2)...
  • 1、手机滑动-swipe查看源码Ctrl + 鼠标右键点击 driver.swipe()查看源码语法,起点和终点四个坐标参数。 手机屏幕从左上角开始为0,向右...向下滑动实例封装滑动方法,代码如下:2、点击手机屏幕坐标-tap使用场景:...
  • 在我们进行appium自动化测试的过程中上下左右滑动屏幕时在所难免的。今天博主就分享一下在appium自动化测试场景中使用率超高的划动屏幕的操作吧。 前置条件:1.手机已经使用usb连接手机。 2.打开appium-desktop待测...
  • 移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成...以下是四种touch事件touchstart: //手指放到屏幕上时触发touchmove: //手指在屏幕滑动式触发touchend: //手指...

空空如也

空空如也

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

python滑动手机屏幕

python 订阅