首页 > 其他分享 >Appium自动化(13):Appium常用操作之TouchAction操作

Appium自动化(13):Appium常用操作之TouchAction操作

时间:2023-05-27 21:02:28浏览次数:59  
标签:el None TouchAction driver Appium appium press 13

TouchAction操作

  Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。其原理是将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。

TouchAction类支持的动作很多;常用操作如下:

1、press(self,el=None,x=None,y=None):  按压一个元素或坐标,el为要点击的元素,x/y为坐标
2、long_press(self,el=None,x=None,y=None,duration=1000):  长按压一个元素或坐标,默认长按时间1000ms
3、tap(self,element=None,x=None,y=None,count=1):  对一个元素或控件执行点击操作
4、move_to(self,el=None,x=None,y=None):  将指针从上一个点移动到指定的元素或点
5、wait(self,ms=0):  等待时间,单位毫秒
6、release(self):  释放,结束屏幕上的一系列动作的命令操作
7、perform(self):  执行,将待执行的操作发送到服务器的命令操作

利用TouchAction类实现操作如下:

一、利用TouchAction类实现点击操作

导入 from appium.webdriver.common.touch_action import TouchAction

代码示例:

from appium import webdriver  # 导入appium 驱动包
from appium.webdriver.webdriver import By   # 导入appium 定位的方法包
from appium.webdriver.common.touch_action import TouchAction  # 导入appium的TouchAction类
des = {
   'automationName':'appium',
    'platformName':'Android',
    'platformVersion':'6.0.1',  # 填写android虚拟机/真机的系统版本号
    'deviceName':'MuMu',      # 填写安卓虚拟机/真机的设备名称
    'appPackage':'com.android.settings',    # 填写被测app包名
    'appActivity':'.Settings',    # 填写被测app的入口
    'udid':'127.0.0.1:7555',    # 填写通过命令行 adb devices 查看到的udid
    'noReset':True,               # 是否重置APP
    'unicodeKeyboard':True,       # 是否支持中文输入
    'resetKeyboard':True,         # 是否支持重置键盘
    'newCommandTimeout':30        # 30秒没发送新命令就断开连接
       }

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)

el = driver.find_element(By.XPATH,'//android.widget.TextView[@text="显示"]')
# el.click()

# 通过TouchAction类实现点击操作
TouchAction(driver).press(el).release().perform()  # 链条指令  点击操作(同click效果一样)

 

二、长按操作:

TouchAction(driver).long_press(el,None,None,10000).perform()

代码示例:

# 长按 el元素 3秒
TouchAction(driver).long_press(el=el,duration=3000).perform()

注:long_press  有个bug:把元素作为参数,会把该元素的bounds(该属性可以在ispector工具中查看)属性,相加 /2,得到x,y坐标,但是x和y坐标可能出现小数情况;因为坐标只能是整数,所以会导致报错;

解决方案:

直接使用 long_press 的坐标进行操作;通过元素的x,y坐标的 bounds 属性,把元素坐标的 x相加 除以2 再把 y相加 除以2,如果有小数,就四舍五入

bounds 属性值为元素的左上角坐标和右下角坐标;如下图:

Appium自动化(13):Appium常用操作之TouchAction操作_android

 

三、手势轨迹操作:

TouchAction(driver).press(x=211,y=660).wait(100).move_to(x=325,y=0).wait(100).move_to(x=0,y=325).move_to(x=0,y=325).release().perform()

备注:坐标采用相对值,非绝对坐标值

代码示例:通过点击并移动实现图案的手势操作

import time
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.webdriver import By
des = {
    'automationName':'appium',
    'platformName':'Android',
    'platformVersion':'6.0.1',  # 填写android虚拟机/真机的系统版本号
    'deviceName':'MuMu',      # 填写安卓虚拟机/真机的设备名称
    'appPackage':'com.android.settings',    # 填写被测app包名
    'appActivity':'.Settings',    # 填写被测app的入口
    'udid':'127.0.0.1:7555',    # 填写通过命令行 adb devices 查看到的udid
    'noReset':True,               # 是否重置APP
    'unicodeKeyboard':True,       # 是否支持中文输入
    'resetKeyboard':True,         # 是否支持重置键盘
    'newCommandTimeout':30        # 30秒没发送新命令就断开连接
       }


driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)

driver.swipe(220,1872,220,1027,5000)  # 从坐标1移动到坐标2 时间为5秒
time.sleep(2)
# 点击 安全 按钮
el_01 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="安全"]')
touch_action = TouchAction(driver)
touch_action.press(el_01).release().perform()
time.sleep(2)
# 点击 屏幕锁定方式 按钮
el_02 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="屏幕锁定方式"]')
touch_action.press(el_02).release().perform()
time.sleep(2)
# 点击 图案 按钮
el_03 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="图案"]')
touch_action.press(el_03).release().perform()
# 执行手势操作  图案坐标 190 705 / 564 708 / 565 1085 / 562 1457 / 937 1455 / 935 1085
touch_action = (touch_action.press(x=190,y=705).wait(1000).move_to(x=564,y=708)
                .wait(1000).move_to(x=565,y=1085).wait(1000).move_to(x=562,y=1457)
                .wait(1000).move_to(x=937,y=1455).wait(1000).move_to(x=935, y=1085)
                .release().perform())

 

效果如下:

Appium自动化(13):Appium常用操作之TouchAction操作_代码示例_02

 

标签:el,None,TouchAction,driver,Appium,appium,press,13
From: https://blog.51cto.com/YouJeffrey/6363059

相关文章

  • ASEMI代理长电可控硅BT134的工作原理,BT134的应用领域
    编辑-Z本文将对可控硅BT134的工作原理及应用领域进行详细阐述。首先,我们将介绍可控硅BT134的基本概念和工作原理;其次,我们将探讨可控硅BT134在电力电子领域的应用;接着,我们将分析可控硅BT134在家用电器中的应用;最后,我们将讨论可控硅BT134在工业自动化领域的应用。 1、可控硅BT134的......
  • ASEMI代理长电可控硅BT136参数,BT136规格,BT136说明
    编辑-Z长电可控硅BT136参数:型号:BT136RMS通态电流IT(RMS):6A非重复浪涌峰值导通电流ITSM:25A峰值栅极电流IGM:2A平均栅极功耗PG(AV):0.5W存储接点温度范围Tstg:-40to+150℃工作接点温度范围Tj:-40to+125℃额定重复峰值关闭状态/反向电压VDRM,VRRM:600V额定重复峰值关断状态电流IDRM,IR......
  • ASEMI代理长电可控硅BT134的工作原理,BT134的应用领域
    编辑-Z本文将对可控硅BT134的工作原理及应用领域进行详细阐述。首先,我们将介绍可控硅BT134的基本概念和工作原理;其次,我们将探讨可控硅BT134在电力电子领域的应用;接着,我们将分析可控硅BT134在家用电器中的应用;最后,我们将讨论可控硅BT134在工业自动化领域的应用。 1、可控硅BT13......
  • ASEMI代理长电可控硅BT136参数,BT136规格,BT136说明
    编辑-Z长电可控硅BT136参数:型号:BT136RMS通态电流IT(RMS):6A非重复浪涌峰值导通电流ITSM:25A峰值栅极电流IGM:2A平均栅极功耗PG(AV):0.5W存储接点温度范围Tstg:-40to+150℃工作接点温度范围Tj:-40to+125℃额定重复峰值关闭状态/反向电压VDRM,VRRM:600V额定重复峰值关断状态......
  • Appium自动化(10):Appium常用操作之设备操作
    设备基本操作前置条件:示例代码:fromappiumimportwebdriver#导入appium驱动包#1、定义一个DesiredCapabilities配置的字典des={'automationName':'appium','platformName':'Android',#平台的名称,iOS,Android,FirefoxOS'platformVe......
  • CF1383E Strange Operation
    首先可以发现对于一次操作,本质上就是删掉存在于两个\(1\)之间的若干个\(0\)的其中一个或者删掉两个连续的\(1\)的其中一个。所以对于最终的\(01\)串\(A\),令\(B\)表示\(A\)中两个\(1\)之间的\(0\)的个数,为了方便后面的计算,对于\(A\)以\(1\)开头或结尾,需要在......
  • BT137-ASEMI双向可控硅BT134参数、尺寸、规格
    编辑:llBT137-ASEMI双向可控硅BT137参数、尺寸、规格型号:BT137品牌:ASEMI封装:TO-220特性:可控硅正向电流:8A反向耐压:600V引脚数量:3芯片个数:1包装方式:3000pcs/盘浪涌电流:40A 特点:双向可控硅工作温度:-40℃~150℃BT137应用:主要应用于调光、控温、马达控制BT137双向可控硅采用穿通隔离台面......
  • 《安富莱嵌入式周报》第313期:搬运机器人,微软出的C语言手册,开源生物信号采集板,开源SMD
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新一期视频教程:DSP视频教程第12期:TI开源分享IQmathDSP源码,适用于所有Cortex-M内核,本期教程做个手把手移植(2022-05-22)https://www.armbbs.cn/forum.php?mod=viewthread&......
  • 13-分频器-奇分频
    1.奇分频实现将一个系统时钟进行5分频的奇数分频的功能。可以用于将高频的时钟降低为低频的时钟工作使用。1.1框图及波形在偶数分频方法中,波形绘制时,计数器只要计数到M/2-1,计数器清零;但是在奇数分频时,不能用这样的方式(不存在1.5、2.5个周期计数)奇数分频直接计数到M(计数......
  • BT137-ASEMI双向可控硅BT134参数、尺寸、规格
    编辑:llBT137-ASEMI双向可控硅BT134参数、尺寸、规格型号:BT137品牌:ASEMI封装:TO-220特性:可控硅正向电流:8A反向耐压:600V引脚数量:3芯片个数:1包装方式:3000pcs/盘浪涌电流:40A特点:双向可控硅工作温度:-40℃~150℃BT137应用:主要应用于调光、控温、马达控制BT137双向可控硅......