文章目录一、高级手势TouchAction介绍二、①轻敲2.1 方法2.2 轻敲-示例2.2.1 轻敲-传入元素2.2.2 轻敲-传入坐标三、②按下和抬起3.1 方法3.2 按下和抬起-示例3.2.1 按下-示例3.2.2 按下和抬起-示例四、③等待4.1 方法4.2 等待-示例五、④长按5.1 方法5.2 长按-示例六、⑤移动6.1 方法6.2 移动-示例6.2.1 方式1-移动6.2.2 方式2-移动等待一、高级手势TouchAction介绍TouchAction 可以实现一些针对手势的操作比如滑动、长按、拖动等。我们可以将这些基本手势组合成一个相对复杂的手势。比如我们解锁手机或者一些应用软件都有手势解锁的这种方式。fromappium.webdriver.common.touch_actionimportTouchAction# ①创建TouchAction对象touch_actionTouchAction(driver)# ②高级手势对象提供所想执行的手势方法touch_action.手势方法# ③执行手势touch_action.perform()# 或者TouchAction(driver).手势方法.perform()二、①轻敲轻敲模拟手指对某个元素或坐标按下并快速抬起。比如固定点击100, 100的位置。2.1 方法# ①创建TouchAction对象touch_actionTouchAction(driver)# ②调用轻敲,元素对象或坐标二选一touch_action.tap(elementNone,xNone,yNone)# element元素 、xy坐标二者选其一# ③执行手势touch_action.perform()# 换个写法TouchAction(driver).tap(elementNone,xNone,yNone).perform()2.2 轻敲-示例打开《设置》轻敲 “WLAN”2.2.1 轻敲-传入元素# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 这个python类AppiumBy继承自By类用于定义不同的定位策略常量以便在Appium自动化测试中定位元素fromappium.webdriver.common.appiumbyimportAppiumBy# 导入AppiumBy# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 轻敲 “WLAN”wlan_buttondriver.find_element(AppiumBy.XPATH,//*[textWLAN]) # ①. 创建touchaction对象 touch_action TouchAction(driver) # ②. 调用想要执行的动作 touch_action touch_action.tap(wlan_button) # ③. 使用perform执行动作 touch_action.perform() TouchAction(driver).tap(wlan_button).perform()time.sleep(5)# 5、关闭APPdriver.quit()2.2.2 轻敲-传入坐标# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 这个python类AppiumBy继承自By类用于定义不同的定位策略常量以便在Appium自动化测试中定位元素fromappium.webdriver.common.appiumbyimportAppiumBy# 导入AppiumBy# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 轻敲 “WLAN”TouchAction(driver).tap(x550,y550).perform()# WLAN坐标不同模拟器坐标可能不同time.sleep(5)# 5、关闭APPdriver.quit()三、②按下和抬起按下和抬起模拟手指一直按下模拟手指抬起。可以用来组合成轻敲或长按的操作。3.1 方法# ①创建TouchAction对象touch_actionTouchAction(driver)# ②调用按下,元素对象或坐标二选一touch_action.press(elementNone,xNone,yNone)# # element元素 、xy坐标二者选其一# ③调用抬起touch_action.release()# ④执行手势touch_action.perform()# 换个写法:TouchAction(driver).press(elementNone,xNone,yNone).perform()# 按下TouchAction(driver).release().perform()# 抬起TouchAction(driver).press(x550,y550).release().perform()# 按下和抬起3.2 按下和抬起-示例3.2.1 按下-示例需求使用坐标的形式按下 WLAN 550, 5502 秒后按下550, 550的位置# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 使用坐标的形式按下 WLAN 550, 5502 秒后按下550, 550的位置TouchAction(driver).press(x550,y550).perform()time.sleep(2)TouchAction(driver).press(x550,y550).perform()time.sleep(5)# 5、关闭APPdriver.quit()3.2.2 按下和抬起-示例需求使用坐标的形式按下 WLAN 550, 5502 秒后按下550, 550的位置并抬起。# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 使用坐标的形式按下 WLAN 550, 5502 秒后按下550, 550的位置并抬起。TouchAction(driver).press(x550,y550).perform()time.sleep(2)TouchAction(driver).press(x550,y550).release().perform()time.sleep(5)# 5、关闭APPdriver.quit()四、③等待思考时间等待模拟手指等待在执行下一步时等待一段指定时间。比如按下后等待 5 秒之后再抬起。4.1 方法# 模拟手指暂停到当前动作指定时间。TouchAction(driver).wait(mstime).perform()# ms暂停的毫秒数4.2 等待-示例需求使用坐标的形式点击WLAN 550, 6502 秒后按下550, 550的位置暂停 2 秒并抬起。# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 使用坐标的形式点击 WLAN 550, 6502 秒后按下550, 550的位置暂停 2 秒并抬起。TouchAction(driver).tap(x550,y550).perform()time.sleep(2)TouchAction(driver).press(x550,y550).wait(2000).release().perform()time.sleep(5)# 5、关闭APPdriver.quit()五、④长按长按模拟手指对元素或坐标的长按操作。【比如长按某个按钮弹出菜单。长按APP图标可以卸载应用】5.1 方法长按 按下.等待.抬手# 模拟手指对元素或坐标的长按操作 【duration长按时间毫秒】TouchAction(driver).long_press(elNone,duration1000).perform()# 按元素TouchAction(driver).long_press(xNone,yNone,duration1000).perform()# 按坐标5.2 长按-示例需求使用坐标的形式点击 WLAN 550, 5502 秒后长按550, 550的位置持续 2 秒。# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity]com.android.settings.Settingsdesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 需求 打开《设置》完成以下步骤# 使用坐标的形式点击 WLAN 550, 5502 秒后长按550, 550的位置持续 2 秒。TouchAction(driver).tap(x550,y550).perform()time.sleep(2)TouchAction(driver).long_press(x550,y550,duration2000).perform()time.sleep(5)# 5、关闭APPdriver.quit()六、⑤移动移动模拟手指移动操作比如手势解锁需要先按下再移动。6.1 方法# 模拟手指对元素或坐标的移动操作TouchAction(driver).move_to(elNone,xNone,yNone).perform()# 移动、等待TouchAction(driver).move_to(elNone,xNone,yNone).wait(mstime)6.2 移动-示例1、在手势解锁中画一个如下图的案例。2、《设置》— 安全 —选择屏幕锁定方式—图案3、在安卓当中每一个界面基本上都会有一个独立的名字在程序中的应用参数进行修改能直接进入。4、图案的包名和界面名 com.android.settings/.ChooseLockPattern5、使用uiautomatorviewer来获取图案坐标。6.2.1 方式1-移动importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction desired_capsdict()# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]192.168.56.101:5555# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].ChooseLockPattern# 获取driverdriverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 如果代码过长可以使用回车进行换行# 换行的时候默认会多一个 右斜线 是正常的# 如果不希望出现这个 右斜线 可以将整句代码用括号括起来然后再使用回车换行即可TouchAction(driver).press(x175,y720).move_to(x536,y714).move_to(x902,y716).\ move_to(x902,y1077).move_to(x536,y1077).move_to(x175,y1075).\ move_to(x536,y1435).release().perform()time.sleep(5)driver.quit()6.2.2 方式2-移动等待# 1、导包importtimefromappiumimportwebdriverfromappium.webdriver.common.touch_actionimportTouchAction# 2、配置启动参数desired_caps{}# 手机参数desired_caps[platformName]Androiddesired_caps[platformVersion]5.1desired_caps[deviceName]1# 应用参数desired_caps[appPackage]com.android.settingsdesired_caps[appActivity].ChooseLockPatterndesired_caps[unicodeKeyboard]True# 使用自带输入法输入中文时填Truedesired_caps[resetKeyboard]True# 执行完程序恢复原来输入法# 3、创建APP驱动对象driverwebdriver.Remote(http://localhost:4723/wd/hub,desired_caps)# 隐式等待driver.implicitly_wait(30)# 4、业务操作# 如果代码过长可以使用回车进行换行# 换行的时候默认会多一个 右斜线 是正常的# 如果不希望出现这个 右斜线 可以将整句代码用括号括起来然后再使用回车换行即可TouchAction(driver).press(x175,y720).wait(1000).move_to(x536,y714).wait(1000).\ move_to(x902,y716).wait(1000).move_to(x902,y1077).wait(1000).\ move_to(x175,y1075).wait(1000).move_to(x536,y1435).wait(1000).perform()time.sleep(5)# 5、关闭APPdriver.quit()