APP自動化--元素操作之九宮格解鎖密碼圖案
阿新 • • 發佈:2019-02-10
APP自動化時,遇到九宮格不要慌。根據咱們長期的自動化經驗先進行一波分析。
當有多種情況的時候,例如:
1、 九宮格是由9個元素組成。那很簡單啦!可以直接定位到元素的位置,然後用模擬觸屏類(TouchAction類)的方法進行一波操作即可。
2、九宮格是正方形的元素。那就先計算下,把每個點平均成6段,就可以獲取到第一個點的座標。此時就可以使用TouchAction進行,按住第一個點,然後使用move_to移動到第二個點(move_to的用法:x,y為相對上一個座標的移動距離),最後釋放release()並執行perform()。
操作效果如下:
from appium.webdriver.common.touch_action import TouchAction #模擬觸屏 # 繪製九宮格 # 獲取九宮格的起始座標和大小 ele = driver.find_element_by_id("com.xxzb.fenwoo:id/gesturepwd_create_lockview") size = ele.size # 獲取元素的寬和高 start_loc = ele.location # 獲取元素的座標 print("九宮格的大小為:",size,"九宮格的起始座標:",start_loc) loc_1_x = start_loc["x"] + size["width"]/6 loc_1_y = start_loc["y"] + size["height"]/6 print("第一個點的x座標:",loc_1_x,"第一個點的y座標:",loc_1_y) ta = TouchAction(driver) ta.press(x=loc_1_x, y=loc_1_y).wait(200).\ move_to(x=size["width"]*2/6, y=0).wait(200).\ move_to(x=size["width"]*2/6, y=0).wait(200).\ move_to(x=-size["width"]*2/6, y=size["height"]*2/6).wait(200).\ move_to(x=-size["width"]*2/6, y=size["height"]*2/6).wait(200).\ release().wait(200).perform()
3、 九宮格是長方形的元素。根據元素的大小進行分析和計算操作方式大同小異。