在我们进行appium自动化测试的过程中上下左右滑动屏幕时在所难免的。今天博主就分享一下在appium自动化测试场景中使用率超高的划动屏幕的操作吧。
前置条件:1.手机已经使用usb连接手机。 2.打开appium-desktop待测手机应用页面已经打开。 3.python通过appium模块可以正常打开链接手机
其实呢我们的手机页面有x,y坐标的一个概念,页面的左上角就是(0,0)点,其实呢我们在页面上定位的所有元素都有一个开始坐标和结束坐标。用appium-desktop定位元素的小伙伴可以能发现每个元素都有一个bounds属性,它就值就是元素的开始坐标与结束坐标。
我们的页面上任意的点呢其实也都是无数的元素组成的,我们对于页面滑动操作呢其实也就是从这个点移动到另一个点而已,这里姑且我们先定义两个点(x1,y1)(x2,y2)上下滑动呢固定x坐标y坐标变动,左右滑动y坐标固定x坐标变动,其实原理还是很简单的。下面上代码吧,看如何实现的。
因为不同手机的屏幕尺寸是不一样的,首页我们先用get_window_size函数获取手机屏幕尺寸。
def get_size(self): #获取屏幕尺寸
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return x , y
下面是向下滑动向下滑动呢x轴保持不变,y轴改变。最后最好等待1s不等待的话页面可能刷不过来的
'''向下滑动'''
def swipleft(self):
sleep(3)
l = self.get_size()
x1 = int(l[0]*0.3)
y1 = int(l[0]*0.73)
y2 = int(l[0]*0.25)
x2 = int(l[0]*0.3)
self.driver.swipe(x1,y1,x2,y2,1000)
sleep(1)
连续向下滑动可以用for循环实现。
def down(self):
sleep(3)
left = random.randint(1, 10)
for i in range(left):
self.swipleft()
sleep(1)
向上滑动的操作呢就是使Y1小于y2就好,其余不用改变,
向左滑动。
def swip_left(self):
sleep(3)
l = self.get_size()
x1 = int(l[0]*0.75)
x2 = int(l[0]*0.25)
y1 = int(l[0]*0.3)
y2 = int(l[0]*0.3)
self.driver.swipe(x1,x2,y1,y2,1000)
sleep(1)
向右滑动的方法同理,调转x1,x2的大小即可。
我们也可以通过坐标进行页面的点击,有时候我们在操作H5元素的可以会用到,网上也有很多关于坐标点击页面元素的方法,博主也看了很多但发现很多都说错误的,博主这里分享一下正确的写法。
from appium.webdriver.common.touch_action import TouchAction
def taphit(self):
sleep(3)
TouchAction(self.driver).tap(x=474,y=2131).perform()
sleep(1)
当中的(x,y)就是要定位的坐标啦。大家可以将其设置为变量。
后续呢还会跟大家分享很多实用的自动化测试的技巧,有兴趣的可以关注留言啊hhhhh