Appium + Python 自动化学习之九:TouchAction连续滑动操作

TouchAction是Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。

1.press按压方法


开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。
格式:

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

press也可以接收屏幕的坐标(x,y)。

实例

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

2.longPress长按方法


开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参duration,应为需要长按,所以须有一个按的时间。它以毫秒为单位。1000表示按一秒钟。其用法与上面的press()方法相同。
格式:

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

实例:

TouchAction(driver).longPress(100,300,10000).release().perform()

3.tap点击方法


对一个元素或控件执行点击操作。
格式:

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

实例:

TouchAction(driver).tap(200 ,200).perform().release()

4.moveTo移动方法


将指针(光标)从上一个点移动到指定的元素或点。
格式:

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

实例:

TouchAction(driver).press(x=256,y=591).wait(1000)\
    .move_to(x=546,y=540).wait(1000)\
    .move_to(x=835,y=869).wait(1000)\
    .move_to(x=568,y=1151).wait(1000)\
    .release().perform()

5.wait暂停方法


暂停脚本的执行,单位为毫秒。
格式:

wait(self,ms=0)

实例:

TouchAction(driver).wait(1000)

实现九宫格的实例:
测试app:随手记
Appium + Python 自动化学习之九:TouchAction连续滑动操作_第1张图片

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from time import sleep


desired_caps={
     
    'platformName':'Android',
    'platformVesion':'6.0.1',
    'deviceName':'127.0.0.1:21305',
    'appPackage':'com.mymoney',
    'appActivity':'com.mymoney.biz.main.v12.MainActivityV12',
    'noReset':False

}

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
driver.implicitly_wait(10)
try:
	driver.find_element_by_id("com.mymoney:id/confirmBtn").click()
	driver.find_element_by_xpath("//*[@text='允许']").click()
	driver.find_element_by_xpath("//*[@text='允许']").click()
except Exception as e:
	pass
driver.find_element_by_id("com.mymoney:id/nav_btn_forth").click()
#实现向上滑动操作
def swipetestup():
    x=driver.get_window_size()['width']
    y=driver.get_window_size()['height']
    x1=x*0.5
    y1=y*0.9
    y2=y*0.1
    driver.swipe(x1,y1,x1,y2,5000)

swipetestup()
sleep(1)
driver.find_element_by_xpath("//*[@text='高级功能']").click()
driver.find_element_by_id("com.mymoney:id/password_protect").click()
driver.find_element_by_xpath("//*[@text='手势密码']").click()
for i in range(2):
	TouchAction(driver).press(x=256,y=591).wait(1000)\
   	    .move_to(x=546,y=540).wait(1000)\
            .move_to(x=835,y=869).wait(1000)\
            .move_to(x=568,y=1151).wait(1000)\
            .release().perform()

注意:

本例中还用到了别外两个新方法。
release() 结束的行动取消屏幕上的指针。
perform() 执行的操作发送到服务器的命令操作。

实例场景:
在头条上按照元素来实现频道移动

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from time import sleep

desired_caps={
     
    'platformName':'Android',
    'platformVesion':'6.0.1',
    'deviceName':'127.0.0.1:21305',
    'appPackage':'com.ss.android.article.news',
    'appActivity':'com.ss.android.article.news.activity.MainActivity',
    'noReset':False

}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/ahy").click()
driver.find_element_by_id("com.ss.android.article.news:id/aig").click()

ele=driver.find_element_by_xpath("//*[@text='NBA']")
ele1=driver.find_element_by_xpath("//*[@text='热点']")
TouchAction(driver).long_press(ele,10000).move_to(ele1).wait(1000).release().perform()

你可能感兴趣的:(Appium,selenium,软件测试,android)