python 控制手机滑屏_python3+Appium自动化07-滑动操作以及滑动方法封装

滑动解析

滑动主要分为:水平滑动、垂直滑动、任意方向滑动

滑动轨迹

在Appium中模拟用户滑动操作需要使用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.

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

:Args:

- start_x - 开始滑动的x坐标

- start_y - 开始滑动的y坐标

- end_x - 结束点x坐标

- end_y - 结束点y坐标

- duration - 持续时间,单位毫秒,时间越短速度越快。默认为None可不填,一般设置500-1000毫秒比较合适

:Usage:

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

封装滑动方法

#coding=utf-8

from appium import webdriver

import time

desired_caps = {

#android的apk

'platformName': 'Android',

#手机设备名称

'deviceName': '192.168.175.101:5555',

#android系统的版本号

'platformVersion': '5.1',

# 'deviceName': 'ceshi',

# 'platformVersion': '7.0',

# 'udid':'83f04b4b5338424e',

'app':r'C:\Users\bzART\Desktop\app-artmall-release.apk',

# apk包名

'appPackage': 'com.baozhenart.artmall',

# apk的launcherActivity

'appActivity': 'com.baozhenart.artmall.SplashActivity',

#默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样

'noReset':'False',

#下面两行代码是为了屏蔽软件盘以至于可以输入中文

'unicodeKeyboard':True,#使用unicode编码方式发送字符串

'resetKeyboard':True#将键盘隐藏起来

}

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

driver.implicitly_wait(10)

time.sleep(5)

#获取屏幕尺寸,由于手机屏幕分辨率不一样,同一个元素在不同手机上的坐标不一样,滑动坐标不能写死。可以获取屏幕宽和高,再通过比例计算

def get_size():

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

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

return x,y

#显示屏幕尺寸(width,height)

l=get_size()

print(l)

#向左滑动屏幕,n滑动次数,t滑动持续时间

def swipeLeft(driver,n,t=500):

l=get_size()

x1=l[0]*0.9 #起始x坐标

y1=l[1]*0.5 #y坐标

x2=l[0]*0.1 #终点x坐标

#向左滑动n次

for i in range(n):

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

#向右滑动屏幕

def swipeRight(driver,n,t=500):

l=get_size()

y1=l[1]*0.5

x1=l[0]*0.25

x2=l[0]*0.95

for i in range(n):

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

#向上滑动屏幕

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

l=get_size()

x1=l[0]*0.5

y1=l[1]*0.95

y2=l[1]*0.35

for i in range(n):

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

#向下滑动屏幕

def swipeDown(driver,n,t=500):

l = get_size()

x1 = l[0] * 0.5

y1 = l[1] * 0.35

y2 = l[1] * 0.85

for i in range(n):

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

if __name__=="__main__":

swipeLeft(driver,2)

time.sleep(2)

swipeRight(driver,1)

python3+Appium自动化12-H5元素定位环境搭建

前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素 ...

python3+Appium自动化02-Capability配置

基本参数 参数 描述 实例 automationName 自动化测试引擎 Appium或 Selendroid platformName 手机操作系统 iOS, Android, 或 FirefoxO ...

python3+Appium自动化10-日志收集

日志概述 日志作用 日志是定位问题的重要手段 日志级别 级别 何时使用 DEBUG 调试信息,也是最详细的日志信息 INFO 证明事情按预期工作 WARNING 表明发生了一些意外,或者不就的将来(如 ...

python3+Appium自动化13-H5元素定位实践案例

测试场景 启动钉钉app进入工作H5页面,点击考勤签到 查看webview上元素 1.电脑上打开chrome浏览器输入:chrome://inspect/#devices 2.Discover USB ...

python3+Appium自动化09-Capability配置数据分离实践

代码实现 参数配置表:desired_caps.yaml platformName: Android deviceName: 192.168.175.101:5555 platformVersion: ...

python3+Appium自动化08-数据配置yaml

yaml简介 yaml是一种简洁的非标记语言.yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读 由于实现简单,解析成本低,yaml特别适合在脚本语言中使用.现有的语言实现: ...

python3+Appium自动化06-屏幕截图

截图方法 save_screenshot() 该方法直接保存当前屏幕截图到当前脚本所在文件位置 driver.save_screenshot('login.png') get_screenshot_a ...

python3+Appium自动化04-Toast元素识别

什么是toast? 如下图,“再按一次退出程序”,这就是toast 如何定位toast元素? Appium1.6.3开始支持识别Toast内容,主要基于UiAutomator2 想定位toast元素, ...

python3+Appium自动化03-Appium元素检测

需要导入方法NoSuchElementException from appium import webdriver from selenium.common.exceptions import NoS ...

随机推荐

ORB-SLAM(一)简介

ORB-SLAM是一种基于ORB特征的三维定位与地图构建算法(SLAM)[1].该算法由Raul Mur-Artal,J. M. M. Montiel和Juan D. Tardos于2015年发表在I ...

Shell条件与测试

分类参考 文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname ...

学习笔记TF026:多层感知机

隐含层,指除输入.输出层外,的中间层.输入.输出层对外可见.隐含层对外不可见.理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数.隐含层越多,越容易拟合复杂函数.拟合复杂函数,所需 ...

VS2010安装OpenGL

以下涉及到的所有资源都在这里: 链接:https://pan.baidu.com/s/1eSctT5K 密码:174s *我的VS2010的安装位置:D:\Program Files (x86)\M ...

CMCC验证绕过POC

大学的时候无意间发现绕过CMCC验证的方法(贫穷使人进步...),写了段POC脚本,时过两年,漏洞应该已经失效了(我猜 --),刚刚发现有人私信问我要,都那么久了鬼还记得写的什么啊,但确实看到了又不能 ...

centos7安装git踩坑记

之前自己是按照Git 服务器搭建这篇博客来安装git服务器的,一步步顺序下来,但git clone的时候,每次都要求输入密码.说好的SSH免密登录呢.前后搞了一天多才搞定,现在记录下踩过的坑. 坑1: ...

Request Body可以反复读取的方法

org.springframework.web.filter.HiddenHttpMethodFilter:过滤器已经读取流了,因此想频繁读取流的话,自定义Filter必须在org.springfra ...

oracle中

select tmp_tb.*, ROWNUM row_id from (SELECT MX.*                                          --这里不能直接用* ...

基于 Python 和 Pandas 的数据分析(1)

基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

GO学习笔记 - 用";:=";实现短声明变量!

对于Delphi程序员,":="这个符号再熟悉不过了,表示对变量赋值!在GO语言中,同样表示赋值,但是和Delphi有些不同,不同就在于不需要var变量名称了!GO语言中的&quo ...

你可能感兴趣的:(python,控制手机滑屏)