Appium自动化(12):Appium常用操作之点击&滑动类操作 |
您所在的位置:网站首页 › js点击滚动到指定位置的快捷键 › Appium自动化(12):Appium常用操作之点击&滑动类操作 |
点击&滑动类操作
在进行app自动化的时候,经常会进行点击或滑动的操作,比如点击坐标,左右滑动,上下滑动等,Appium相应提供了解决方案。 坐标的开启步骤: 开发者选项——指针位置开启 坐标展示: 在flick和swipe中都提到了坐标,android界面坐标可以通过如下方式进行获取: 1、uiautomatorviewer或inspector工具识别元素时的bounds属性 2、通过android系统自带的工具,进入设置--开发者选项--指针位置 常用的API如下:一、点击类操作 通过坐标进行点击操作: 1、tap(self,positions,duration=None):模拟手指点击(最多五个手指),可设置按住时间长度(毫秒) positions:list类型,里面对象是元组,最多五个。如:[(100,20),(100,60)] duration:持续时间,单位毫秒,如:500 代码示例: from appium import webdriver # 导入appium 驱动包 des = { '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.tap([(300,1020)],2000) # 模拟手指轻轻的点击 # 三个坐标同时点击 driver.tap([(300,1020),(300,550),(380,1450)],2000) # 模拟手指轻轻的点击注:由于不同手机的分辨率不同,导致通过坐标进行点击会出现不稳定的情况 解决坐标点击对于不同手机不稳定的方法: 使用driver.get_window_size() 获取屏幕尺寸,然后通过百分比确定坐标,进行等比例换算 示例代码: # driver.tap([(300,1020)]) # 原先元素的坐标 print(300/size['width'],1020/size['height']) # 得到一个百分比 0.27 0.5 driver.tap([(int(size['width']*0.27),int(size['height']*0.5))]) # 通过百分比换算的元素坐标二、滑动类操作 通过元素进行滑动操作 1、scroll(self,origin_el,destination_el,duration=None):模拟从元素origin_el滚动至元素destination_el 代码示例: e1 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="显示"]') e2 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="电池"]') driver.scroll(e2,e1) # 从元素e2 滑动到元素e1,实现向下滑动通过元素进行拖动操作 2、drag_and_drop(self,origin_el,destination_el):将元素origin_el拖到目标元素destination_el 代码示例: e1 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="显示"]') e2 = driver.find_element(By.XPATH,'//android.widget.TextView[@text="电池"]') driver.drag_and_drop(e2,e1) # 拖动(与scroll方法效果一样)通过坐标进行滑动操作 3、flick(self,start_x,start_y,end_x,end_y):按住A点后快速滑动至B点,A点的坐标为start_x,start_y,B点的坐标为end_x,end_y,使用flick方法进行滑动偶尔出现不稳定,可以把flick方法中的press改为long_press解决。 press:moveto中endx,endy是相对startx,start_y的偏移量并存在随机滑动加速度或缓冲滑动 long_press:moveto中endx,endy是绝对值。 flick方法进行滑动偶尔出现不稳定,修改flick方法中的press改为long_press解决 修改前: 修改后:
代码示例: driver.flick(300,1020,300,550) # 通过坐标进行滑动操作通过坐标进行滑动操作并有滑动时间控制 4、swipe(self,start_x,start_y,end_x,end_y,duration=None):从A点滑动至B点,滑动时间为毫秒,A点的坐标为start_x,start_y,B点的坐标为end_x,end_y 利用swipe方法实现滑动举例 下滑操作: x=driver.get_window_size()['width'] y=driver.get_window_size()['height'] driver.swipe(x/2,y/2,x/2,y/4,0) #上滑相反坐标即可(采用绝对坐标) 左滑操作: driver.press_keycode(3) x=driver.get_window_size()['width'] y=driver.get_window_size()['height'] driver.swipe(x/4*3,y/2,x/4*1,y/2,0) 代码示例: # 滑动操作--推荐使用该方法 driver.swipe(300,1020,300,550,5000) # 通过坐标进行滑动操作滑动时间为3秒注:由于不同手机的分辨率不同,导致通过坐标进行滑动会出现不稳定的情况 解决坐标滑动对于不同手机不稳定的方法: 使用driver.get_window_size() 获取屏幕尺寸,然后通过屏幕的比例滑动 代码示例: # 从屏幕四分之三的位置滑动到四分之一的位置 driver.swipe(size['width']/2,size['height']*3/4,size['width']/2,size['height']*1/4,2000) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |