一、swipe()
通过传递坐标信息即可完成滑动
为了通用,可以使用其他机型的手机,利用百分比的方式操作
获取整个屏幕的宽和高:
# 获取整个屏幕的宽和高
size = driver.get_window_size()
从右向左滑动,起点x整个宽度的百分比,y整个高度的百分比
# 起点x 整个宽度的百分比 y 整个高度的百分比
driver.swipe(size['width'] * 0.9,size['height'] * 0.5,size['width'] * 0.1,size['height'] * 0.5,200)
二、TouchAction类
将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行
短按(press)
长按(longPress)
点击(tap)
移动到(move_to) x,y为相对上一个坐标的移动距离
等待(wait)
释放(release)
执行(perform)
取消(cancel)
以九宫格绘图为例:
1、先得到元素本身的起点坐标,以及高宽
ele = driver.find_element_by_id('')
# 坐标
loc = ele.location
# 大小
size = ele.size
2、我要操作元素内的点,与起点之间的百分比,关系
p1 = (loc['x']+size['width']*1/6,loc['y']+size['height']*3/6)
p2 = (loc['x']+size['width']*3/6,loc['y']+size['height']*3/6)
p3 = (loc['x']+size['width']*3/6,loc['y']+size['height']*1/6)
p4 = (loc['x']+size['width']*1/6,loc['y']+size['height']*5/6)
# 实例化,滑屏操作
TouchAction(driver).press(x=p1[0],y=p1[1]).wait(200).\
move_to(x=p2[0],y=p2[1]).wait(200).\
move_to(x=p3[0],y=p3[1]).wait(200).\
move_to(x=p4[0],y=p4[1]).wait(200).\
release().perform()
三、列表滑动点击
在一个可滚动的列表当中,将要操作的元素滚动到可见区域
要确保操作的元素在页面可见
进入到一个页面,判断:判断元素是否在页面当中
page_source - 得到当前页面的源码
如果在就不用滑动屏幕,如果不在,就要滑动屏幕
那么需要滑动多少才合适?假设:80%~10%;滑动之后继续判断new的page_source是否有要找的元素
如果滑到最后,不论怎么滑页面也不会变,old == new 证明滑到了底部
size = driver.get_window_size()
# 当我第一次进入页面的时候:
old = None
new = driver.page_source
s = '测试'
while True:
# 退出条件 old == new break
if old == new:
break
else:
# 找元素
if driver.page_source.find('测试') != -1:
print('找到了对应的内容')
break
else:
# 找不到元素的时候,滑动,此时页面更新
driver.swipe(size['width']*0.5,size['height']*0.9,size['width']*0.5,size['height']*0.1,200)
time.sleep(2)
# 更新old 的值。用new 的值更新old 的值
old = new
# 更新new 的值为滑动后的page_source
new = driver.page_source