python+appium自動化測試-07觸控

告別諾基亞時代,現在滿大街都是觸屏智能機。觸屏機釋放了物理鍵盤,通過手勢動作便能達到操作手機功能的目的。所以要進行APP自動化,模擬觸控操作是必要的。

1、左右滑動swipe(int x1,int y1,int x2,int y1, Duration duration)

x = driver.get_window_size()['width']#獲取手機寬度
y = driver.get_window_size()['height']#獲取手機高度
x1 = int(x*0.9)#開始滑動的座標x1
y1=int(y*0.5)#開始滑動的座標y1
x2=int(x*0.1)#結束點座標x2
driver.swipe(x1,y1,x2,y1,1000)#1000爲滑動時間(默認5毫秒)

2、按壓某個位置press(WebElement el, int x, int y)

press() 開始按壓一個元素或座標點(x,y)。通過手指按壓手機屏幕的某個位置。類似於點擊。

TouchAction(driver).press(x=0,y=308)

3、長按long_press(WebElement el, int x, int y, Duration duration)

longPress() 長時間按壓一個元素或座標點(x,y)。 相比press()方法,longPress()多了一個入參duration,以毫秒爲單位。其用法與press()方法相同。

action = TouchAction(driver)
action.longPress(names.get(200),1000)

4、點擊tap(WebElement el, int x, int y)

tap() 對一個元素或控件執行點擊操作。

action = TouchAction(driver)
element = driver.find_element_by_id(‘android:id/button2’)
action.tap(element,200 ,200)

5、移動moveTo(WebElement el, int x, int y)

move_to() 將指針(光標)從上一個點移動到指定的元素或點。
注意:移動到目標位置有時是算絕對座標點,有時是基於前面一個座標點的偏移量,這個要結合具體App來實踐。

action = TouchAction(driver)
element = driver.find_element_by_id(‘android:id/button2’)
action.move_to(element,200 ,200)

6、暫停wait(Duration duration)

暫停腳本的執行,單位爲毫秒。

wait(2000)

7、釋放release()

release() 結束的行動取消屏幕上的指針。

TouchAction(driver).press(x=0,y=308).release()

8、執行perform()

perform() 執行的操作發送到服務器的命令操作。

TouchAction(driver).press(x=0,y=308).release().perform()

9、多點觸控

多點觸控一般用於地圖的縮放,需要用到MultiAction類。

from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction

x=driver.get_window_size()['width']
y=driver.get_window_size()['height']

#縮小
def pinch():
    action1=TouchAction(driver)
    action2=TouchAction(driver)
    zoom_action=MultiAction(driver)

    sleep(10)
    action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.4,y=y*0.4).wait(1000).release()
    action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=x*0.6,y=y*0.6).wait(1000).release()

    print('start pinch...')
    zoom_action.add(action1,action2)
    zoom_action.perform()
    
#放大
def zoom():
    action1=TouchAction(driver)
    action2=TouchAction(driver)
    zoom_action=MultiAction(driver)

    action1.press(x=x*0.4,y=y*0.4).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()
    action2.press(x=x*0.6,y=y*0.6).wait(1000).move_to(x=x*0.8,y=y*0.8).wait(1000).release()

    zoom_action.add(action1,action2)
    zoom_action.perform()

發佈了53 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章