滑动操作 TouchAction

TouchAction

Touch Action包含一些列操作,比如按压、长按、点击、移动、暂停。由着些不同操作可以组成一套动作。使用TochAction需要先导入对应的模块
from appium.webdriver.common.touch_action import TouchAction

  • 按压

    方法:press() 开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。 press也可以接收屏幕的坐标(x,y)。

    1
    2
    press(self, el=None, x=None, y=None)
    TouchAction(driver).press(x=0,y=300)
  • 长按

    方法:longPress() 开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参,既然长按,得有按的时间吧。duration以毫秒为单位。1000表示按一秒钟。其用法与press()方法相同。

    long_press(self, el=None, x=None, y=None, duration=1000)

  • 点击

    方法:tap() 对一个元素或控件执行点击操作。用法参考press()。

    tap(self, element=None, x=None, y=None, count=1)

  • 移动

    _方法:move_to() 将指针从上一个点移动到指定的元素或点。_

    move_to(self, el=None, x=None, y=None)

  • 暂停

    方法:Wait(),暂停脚本的执行,单位为毫秒

    wait(self, ms=0)

  • 释放

    方法release() 结束的行动取消屏幕上的指针。

    release(self)

  • 执行

    perform() 执行的操作发送到服务器的命令操作

    perform(self)

TouchAction实例-九宫格滑动操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from time import sleep

desired_caps={}
desired_caps['platformName']='Android'
desired_caps['deviceName']='127.0.0.1:62025'
desired_caps['platforVersion']='5.1.1'

desired_caps['app']=r'H:\测试学习\mymoney.apk'
desired_caps['appPackage']='com.mymoney'
desired_caps['appActivity']='com.mymoney.biz.splash.SplashScreenActivity'

driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)


def get_size():
x=driver.get_window_size()['width']
y=driver.get_window_size()['height']
return x,y

def swipeLeft():
l=get_size()
x1=int(l[0]*0.9)
y1=int(l[1]*0.5)
x2=int(l[0]*0.1)
driver.swipe(x1,y1,x2,y1,1000)

def swipeUp():
l = get_size()
x1 = int(l[0] * 0.5)
y1 = int(l[1] * 0.95)
y2 = int(l[1] * 0.35)
driver.swipe(x1, y1, x1, y2, 1000)

WebDriverWait(driver,6).until(lambda x:x.find_element_by_id('com.mymoney:id/next_btn'))
for i in range(2):
swipeLeft()
sleep(0.5)

driver.find_element_by_id('com.mymoney:id/begin_btn').click()

try:
closeBtn=driver.find_element_by_id('com.mymoney:id/close_iv')
except NoSuchElementException:
pass
else:
closeBtn.click()

driver.find_element_by_id('com.mymoney:id/nav_setting_btn').click()
WebDriverWait(driver,6).until(lambda x:x.find_element_by_id('com.mymoney:id/content_container_ly'))
swipeUp()

driver.find_element_by_android_uiautomator('new UiSelector().text("高级")').click()

driver.find_element_by_id('com.mymoney:id/password_protected_briv').click()
driver.find_element_by_id('com.mymoney:id/lock_pattern_or_not_sriv').click()

for i in range(2):
TouchAction(driver).press(x=218,y=298).wait(2000)\
.move_to(x=360,y=298).wait(1000)\
.move_to(x=510,y=440).wait(1000)\
.move_to(x=510,y=590).wait(1000)\
.release().perform()