app屏幕滑动定位(swipe方法)
swipe语法:
Swipe(int start x,int start y,int end x,int y,time)#参数的个数根据实际情况使用
解释:
int start x-开始滑动的x坐标,
int start y -开始滑动的y坐标。
int end x -结束点x坐标,
int end y -结束点y坐标。
time 滑动时间(默认5毫秒)
给swipe指定坐标,因为每个手机的屏幕分辨率不一样,指定一个固定的坐标,并不是适用所有手机,所以这里可以通过获取手机屏幕坐标实现,提升代码重用。
python-appium手机自动测试如何实现滑动呢,在webdriver 的api中只提供了指定两个坐标的滑动,但不同的手机分辨率不同,这样写出来的自动化脚本兼容性就不是那么好了。。那么怎么实现滑动呢,仔细看了下webdriber中的方法,发现有个方法get_window_size() ,这个方法可以获得手机的宽度和高度,这样我们就可以实现按屏幕比率滑动了。。具体方法如下:
首先我们给定固定三个参数:0.5 0.25 0.75,(参数合理就好)因为不管向上向下还是向左向右滑,他们的参数都在由大到小变化或者由小到大的变化
理解下下面的图:
1、屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程:图来解释,这个时候屏幕坐标肯定是比原来屏幕1,3坐标小,因为屏幕在往上滑
2、屏幕的坐标图,向下滑动屏幕就是x轴不变,y轴由小到大的变化过程
3、屏幕的坐标图,向左滑动屏幕就是y轴不变,x轴由大到小的变化过程
4、屏幕的坐标图,向右滑动屏幕就是y轴不变,x轴由小到大的变化过程
图的理解:当前屏幕的参数跟着当前滑动屏幕的参数走,在屏幕滑动时在屏幕上下选个参考物做讲解
来区分上下滑
源码如下:
#defgetSize():获取机器屏幕大小
#defswipeup(t):屏幕向上滑动,x1为x轴坐标,y1起始的y轴坐标,y2结束的y轴坐标
# x1 =int(l[0] *0.5):l是上面函数中返回的屏幕大小,0和1其实是索引位,0代表x值,1代表y的值
defgetSize():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return(x, y)
----------------------------------------------------------------------
上滑操作就是从屏幕的下端点击一个坐标然后往上滑动,x坐标可以不变。Y的开始和结束坐标改进即可。
----------------------------------------------------------------------
#屏幕向上滑动(代码里把注释去掉)
defswipeup(t):
l = getSize()
x1 =int(l[0] *0.5)
y1 =int(l[1] *0.75)
y2 =int(l[1] *0.25)
driver.swipe(x1, y1, x1, y2, t)
sleep(6)
swipeup(1000)
---------------------------------------------------------------------
下滑就是从屏幕的上端点击一个坐标然后往下滑动到另外一个坐标,x坐标可以不变。Y的开始和结束坐标改变即可。
---------------------------------------------------------------------
#屏幕向下滑动
defswipedown(t):
l = getSize()
x1 =int(l[0] *0.5)
y1 =int(l[1] *0.25)
y2 =int(l[1] *0.75)
driver.swipe(x2, y1, x1, y1, t)
sleep(6)
swipedown(1000)
-----------------------------------------------------------
左滑就是从屏幕的右端点击一个坐标点往左滑动到另外一个坐标点。Y坐标可以不改变。X的开始和结束坐标改变即可。
-----------------------------------------------------------
#屏幕向左滑动
def swipLeft(t):
l=getSize()
x1=int(l[0]*0.75)
y1=int(l[1]*0.5)
x2=int(l[0]*0.25)
driver.swipe(x1,y1,x2,y1,t)
------------------------------------------------------------------------------
下滑就是从屏幕的上端点击一个坐标然后往下滑动到另外一个坐标,x坐标可以不变。Y的开始和结束坐标改变即可。
-----------------------------------------------------------------------------
幕向右滑动
def swipRight(t):
l=getSize()
x1=int(l[0]*0.25)
y1=int(l[1]*0.5)
x2=int(l[0]*0.75)
driver.swipe(x2,y1,x1,y1,t)
=============================================================
app自动化测时,经常会用到查找元素、定位元素、发送数据、长按、点
击、上滑、下滑、左滑、右滑等操作。
我们要用手机滑动,我们用代码实现,所以是我们学习的目标,
下面讲下用appium自带的swipe方法怎么实现上滑、下滑、左滑、右滑。
一、swipe()
通过传递坐标信息即可完成滑动
为了通用,可以使用其他机型的手机,利用百分比的方式操作
一. 打开uiautomator来熟悉X、Y坐标的概念
每个元素都有开始和结束坐标。(也就是这个元素在屏幕中个位置)
右边的显示区域最后一个元素的开始坐标为[60,535],结束坐标为 [659,582] #比如【取消】按钮
我们要滑动屏幕,也就是点击一个坐标然后滑动到另外一个坐标,做了这样的操作后,屏幕就会相应的滑动。
=================================================================================
先获取屏幕的大小,每款手机尺寸不一,所以通过get_window_size函数获取尺寸。
# 获取整个屏幕的宽和高
size = driver.get_window_size()
print(size) # 打印结果{'width': 720, 'height': 1280}
上滑操作就是从屏幕的下端点击一个坐标然后往上滑动,x坐标可以不变。Y的开始和结束坐标改进即可。
==============================================================================
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毫秒);
参考图:
===================================================
案例演示(1):百度阅读(图书)向右滑动两次
from appium import webdriver from bbbb.roll import * caps = { "platformName": "Android", "deviceName": "127.0.0.1:62001", "platformVersion": "4.4.w", "appPackage": "com.baidu.yuedu", "appActivity": "com.baidu.yuedu.splash.SplashActivity" } driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps) sleep(8) # 取消更新 driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click() sleep(4) driver.find_element_by_id('com.baidu.yuedu:id/righttitle').click() #点击图书 sleep(8) #向右移动一次 size = driver.get_window_size() x1 = size.get("width") * 0.9 x2 = size.get("width") * 0.1 y = size.get("height") * 0.5 driver.swipe(x1, y, x2, y, duration=1000) #向右移动一次 size = driver.get_window_size() x1 = size.get("width") * 0.9 x2 = size.get("width") * 0.1 y = size.get("height") * 0.5 driver.swipe(x1, y, x2, y, duration=1000)
=======================================================
案例演示(2)
第一个模块:页面滑屏:aa模块
from appium import webdriver from bbbb.roll import * caps = { "platformName": "Android", "deviceName": "127.0.0.1:62001", "platformVersion": "4.4.w", "appPackage": "com.baidu.yuedu", "appActivity": "com.baidu.yuedu.splash.SplashActivity" } driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps) sleep(8) # 取消更新 driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click() sleep(4) driver.find_element_by_id('com.baidu.yuedu:id/righttitle').click() #点击图书 sleep(8) # rollUp(driver, 2) # rollDown(driver, 2) # rollLeft(driver, 3) # rollRight(driver, 3)
第二个模块:roll.py
from time import sleep # 左滑 def rollLeft(driver, t=1): for i in range(t): size = driver.get_window_size() x1 = size.get("width") * 0.9 x2 = size.get("width") * 0.1 y = size.get("height") * 0.5 driver.swipe(x1, y, x2, y, duration=1000) sleep(2) # 右滑 def rollRight(driver, t=1): for i in range(t): size = driver.get_window_size() x1 = size.get("width") * 0.1 x2 = size.get("width") * 0.9 y = size.get("height") * 0.5 driver.swipe(x1, y, x2, y, duration=1000) sleep(2) # 上滑 def rollUp(driver, t=1): for i in range(t): size = driver.get_window_size() x = size.get("width") * 0.5 y1 = size.get("height") * 0.9 y2 = size.get("height") * 0.2 driver.swipe(x, y1, x, y2, duration=1000) sleep(2) # 下滑 def rollDown(driver, t=1): for i in range(t): size = driver.get_window_size() x = size.get("width") * 0.5 y1 = size.get("height") * 0.2 y2 = size.get("height") * 0.9 driver.swipe(x, y1, x, y2, duration=1000) sleep(2)
=====================================================================