四、Appium-python-UI自动化之页面-上下滑动、左右滑动swipe方法操作

1.首先看app中怎么划分横纵坐标

2.swipe函数

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 (int): x-coordinate at which to start
            start_y (int): y-coordinate at which to start
            end_x (int): x-coordinate at which to stop
            end_y (int): y-coordinate at which to stop
            duration (:obj:`int`, optional): time to take the swipe, in ms.

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

        Returns:
            `appium.webdriver.webelement.WebElement`
        """
        # `swipe` is something like press-wait-move_to-release, which the server
        # will translate into the correct action
        action = TouchAction(self)
        action             .press(x=start_x, y=start_y)             .wait(ms=duration)             .move_to(x=end_x, y=end_y)             .release()
        action.perform()
        return self
解析:swipe(self, start_x, start_y, end_x, end_y, duration=None)swipe(开始横坐标,开始纵坐标,结束横坐标,结束纵坐标,持续的时间,单位毫秒)

重点:在执行swipe之前一定要强制sleep  3-4s,不然会出现:wipe did not complete successfully报错



3.各种滑动  3.1 因为每个手机的坐标可能都不一样,这里我们可以通过先获取手机屏幕的长和宽,然后再次计算需要滑动的坐标位置,    
def get_myWindow_size(self):

    ‘‘‘
    获取手机长宽
    :return:
    ‘‘‘

    x = self.driver.get_window_size()[‘width‘]  # 获取x轴的长度
    y = self.driver.get_window_size()[‘height‘]  # 获取y轴的长度

    return x,y

    3.2 向下滑动,即x轴不变,y轴减小

def swipeDown(self):

    ‘‘‘
    页面向下滑动
    :return:
    ‘‘‘

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+‘,‘+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 3/4)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x1, y2, 1000)

   3.3 向下滑动,即x轴不变,y轴增大

  

def swipeUp(self):

    ‘‘‘
    页面向上滑动
    :return:
    ‘‘‘

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+‘,‘+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 1/6)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 3/4)
    time.sleep(4)
    self.driver.swipe(x1, y1, x1, y2, 1000)

   3.4 向右滑动 ,即x减小,y轴不变

def swipRight(self):

    ‘‘‘
    页面向右滑动
    :return:
    ‘‘‘

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+‘,‘+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点    x2 = int(size[0] * 0.25)  # size[0]取元组的第一个值,*0.5表示中间的点    y1 = int(size[1] * 3/4)  # size[1]取元组的第二个值,*0.1表示距离底部近    y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x2, y1, 1000)

   3.5 向左滑动,即x轴增大,y轴不变

def swipLeft(self):

    ‘‘‘
    页面向左滑动
    :return:
    ‘‘‘

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+‘,‘+str(size[1]))
    x1 = int(size[0] * 0.25)  # size[0]取元组的第一个值,*0.5表示中间的点
    x2 = int(size[0] * 0.75)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 3/4)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x2, y1, 1000)

原文地址:https://www.cnblogs.com/chushujin/p/12232810.html

时间: 2024-11-09 00:55:26

四、Appium-python-UI自动化之页面-上下滑动、左右滑动swipe方法操作的相关文章

(appium+python)UI自动化_07_UI自动化实例【拼多多搜索商品为例】

前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以拼多多搜索为实例,展示下appium是如何实现自动化的. 前提:已安装配置好appium+python自动化环境 一.连接手机启动app 1,连接手机 -手机USB连接电脑 -手机打开开发者模式.USB调试功能 2,基础信息配置 基础连接信息如下(以微信app为例): 'platformName': 操作平台'deviceName': 设备名称'pl

(appium+python)UI自动化_10_adb常用命令

前言 adb(Android Debug Bridge)工具是android-sdk里的一个工具,是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在app自动化测试过程中,有时要用到adb命令,但是每次都要百度感觉很是繁琐,故总结了下app自动化过程中几个常用的adb命令. adb常用命令 获取设备号 $ adb devices  下载apk 前提:需下载apk至电脑 $ adb install <电脑apk路径> 卸载apk $ adb uninstall <apk包名>

python UI自动化实战记录五:测试页面2-策略页

该部分记录测试页面2-StrategyPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法,包括提取页面元素,页面元素的操作.获取属性.验证元素属性正确性等 4 当用例中需要用到该页面的某元素或操作时,补充方法到该类中,再在用例中调用 #coding:utf-8 """ 策略页面类 LOCATOR : 所有页面元素的定位器 策略页面元素的定位和操作均写在该类中 &

Appium python自动化测试系列之页面滑动原理讲解(十)

10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一下. 所谓的页面滑动在我们实际操作手机的过程中就是不断的从屏幕的下面滑到上面,或者右边滑到左边,反之亦然.其实在做自动化滑动的时候我们遵循的也是这个道理,我们只需要按着一个点然后在屏幕上拖动到另外一个点就行,这就实现了一个简单的滑动.还不懂?回去看第六章的滑动定位吧. 10.2 常见页面滑动方式实战

python UI自动化实战记录三:pageobject-基类

脚本思路:使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中. 项目中的测试页面page1和page2都继承自basepage基类.可使用基类定义的方法.基类里会将webdriver和page合二为一,既将webdriver的操作改写成page的方法. 新建一个包pageclass > 分别新建basepage.page1.page2三个python文件. basepage里定义basepage基类,代码如下: #-*-coding:utf-8-*- "

Appium+Python app自动化测试之脚本启动和停止Appium服务

研究了一段时间的Appium android app的自动化测试,工作中需要连接多台手机终端同时执行测试用例,我实现的方式是获取用例中需要执行用例的设备id个数以及实际连接到的设备数(通过adb devices获取),然后启动相应数量的Appium 服务,以便每个设备执行时并发进行并且互不影响.当然也可以通过selenium grid来实现,只是目前还在学习研究中,还是先把目前启动多个appium服务实现的方式记录下来. 一.Windows下启动单个appium服务 需要启动多个appium服务

appium python andiroid自动化文档整理笔记。

利用一天时间去整理appium for android文档.传送门 利用业余时间自己翻阅资料,google.百度等去查找,费劲一番功夫,最后终于成行了这篇文档. 也是作者对最近自己的学习的一个总结吧,其实平时自己学习感觉是很简单的,可是突然让自己去整理 感觉还是很难的, 感谢自己的努力吧,感谢官网,感谢工具,感谢曾经大家的分享吧, 学习过程中,总是痛苦的,感谢那些优秀的论坛,感谢前辈们的指引,希望大家能够更多的指正. 文中代码如下展示. from appium import webdriver

RobotFramework+Appium实现UI自动化默认清除APP登录状态

这是由于appium启动APP时会自动清除APP本地数据导致的,需要添加一个属性值来控制 noReset=True 原文地址:https://www.cnblogs.com/lv1up/p/11719411.html

python UI自动化之js操作

js处理iframe无需先切换到iframe上,再切回来操作.它可以在iframe上和主页面上来回自由操作. switch方法需要先切换到iframe上,操作完之后又的切换回来(很容易忘记切换回来),操作比较繁琐. 1.js处理富文本(富文本格式如禅道中的添加bug页面) 带iframe的元素,用js去操作contentWindow(相当于切换到iframe) body = "这里是通过js发的正文内容" # js处理iframe问题(js代码太长了,我分成两行了) js = 'doc