文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Appium自动化(12):Appium常用操作之点击&滑动类操作

2023-09-06 07:30

关注

点击&滑动类操作

  在进行app自动化的时候,经常会进行点击或滑动的操作,比如点击坐标,左右滑动,上下滑动等,Appium相应提供了解决方案。

坐标的开启步骤:

开发者选项——指针位置开启

坐标展示:

在flick和swipe中都提到了坐标,android界面坐标可以通过如下方式进行获取:

uiautomatorviewer或inspector工具识别元素时的bounds属性

通过android系统自带的工具,进入设置--开发者选项--指针位置

常用的API如下:

一、点击类操作

通过坐标进行点击操作:

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.5driver.tap([(int(size['width']*0.27),int(size['height']*0.5))])  # 通过百分比换算的元素坐标

二、滑动类操作

通过元素进行滑动操作

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,实现向下滑动

通过元素进行拖动操作

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方法效果一样)

通过坐标进行滑动操作

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)  # 通过坐标进行滑动操作

通过坐标进行滑动操作并有滑动时间控制

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)

来源地址:https://blog.csdn.net/YouJeffrey/article/details/130902139

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯