#調用方式
roll_ele("ID","ele_id","7","up",3)#將控件分為7格,從底部倒數第二格向上滑動3格
#滑動控件的方法
def roll_ele(id,ele_id,size,direct,rollsize=1):
"""
參數id為定位方式,eled_id為具體控件的id或xpath等,size為需要把該控件分成幾格,direct為滑動方向,up或down(上或下),rollsize為要滑動幾格,該參數取值范圍為(1,size-2)
"""
#以下是滑動該單據詳情數據----------------------------------------------------------------------------
ele_ = Element(id,ele_id) #Element為自己包裝的一個定位控件的類
start_loc = ele_.get_location_start() #獲取控件的起點坐標,get_location_start()為自己寫的的一個獲取控件的起點坐標和結束坐標的方法,appium直接為element.location,返回的類型為dict,{'x':520,'y':1230}
size_ele = ele_.get_ele_size() #獲取控件的大小,get_ele_size()為自己寫的一個獲取控件大小的方法,appium直接為element.size,返回的類型為dict,如{'height':589,'width':270}
#控件上方中心的坐標
ele_start = []
ele_start.append(float(start_loc['x'])+float(size_ele['width'])/2)
ele_start.append(float(start_loc['y']))
#控件下方中心的坐標
ele_end = []
ele_end.append(float(start_loc['x'])+float(size_ele['width'])/2)
ele_end.append(float(start_loc['y'])+float(size_ele['height']))
#控件列有size行,每次滑動1/size格,即size_ele['height']/size個長度
per_height = float(size_ele['height'])/size #每格的高度
#若為up,則滑動時,每次從倒數第二格坐標,滑動到上面rollsize格的坐標(因為直接從控件最底部滑動無法滑動,會失敗);其他則都向下滑動
if direct=='up':#swipe_to為自己包裝的driver.swipe()方法
swipe_to(ele_end[0],ele_end[1]-per_height,ele_end[0],ele_end[1]-per_height-rollsize*per_height,1000)
else:
swipe_to(ele_start[0],ele_start[1]+per_height,ele_start[0],ele_start[1]+per_height+rollsize*per_height,1000)
time.sleep(1)