今天跟大家分享下Appium的元素定位的一些小技巧。

Appium对于处理原生的android应用直接通过uiautomatorviewer.bat这个工具来获取元素定位。

在开始appium元素定位的话题之前,首先让我们了解下appium的一些基础知识:

一、测试对象

appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用。

移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取;

移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome),不需要下载到设备上,而是通过浏览器直接访问;

混合应用:同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用。

二、支持平台及语言

appium是跨平台的,支持OSX,Windows以及Linux系统。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性 appium支持多语言,采用C/S设计模式,只要满足client能够发送http请求给server即可

三、元素定位

1.格式:find_element_by_定位方式(value)

我根据手机自带的计算器来解释

通过id定位

通过工具获取到按钮的 resource-id

driver.find_element_by_id('resource-id')

实例: driver.find_element_by_id(' com.android.bbkcalculator:id/clear')

通过class定位

通过工具获取到按钮的class

driver.find_element_by_class_name('class')

实例: driver.find_element_by_class_name(' android.widget.ImageButton ')

通过text定位

appium1.5及之后的版本废弃了name属性(如name=百度一下,需要使用uiautomator的定位方式,使用text的内容)

driver.find_element_by_android_uiautomator("text(中文)")

实例:driver.find_element_by_android_uiautomator ("text("百度一下")")

备注:需要确认这个中文是当前页面唯一值,否则还是定位不到,注意写法,不是直接把中文复制进去

通过xpath定位

driver.find_element_by_xpath("xpath内容 ")

实例:driver.find_element_by_xpath("//android.widget.FrameLayout/android.widget.ImageButton[4]")

以下方式暂时没有用到,如果有问题以后会更改

通过accessibility_id

在UI Automator Viewer界面上并没有找到这个字段,这个对应的字段是content-desc

driver.find_element_by_accessibility_id("accessibility_id")

没有找到实例,要是自己写自动化的APP碰到了,可以用用

通过css_selector定位(webview)

只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致

driver.find_element_by_css_selector()

通过link_text定位(webview)

只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致

driver.find_element_by_link_text()

通过name定位

只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致

driver.find_element_by_name()

2.定位元素的另一种写法:find_element(by,value)

find_element_by_方式(value)实际调用的都是find_element(by,value)

需要导入这个包:from selenium.webdriver.common.by import By

例如:定位id为ag2的元素

方式一:driver.find_element_by_id("ag2”)

方式二:driver.find_element(By.ID,"ag2")

这个操作的好处是可以直接把操作的by和value放到一个元组里,然后调用通用方法来传参获得元素结果。

cateid=(By.ID,"ag2")

driver.find_element(*cateid).click()

by的操作可以是:

By.ID 相当于by_id

By.CLASS_NAME 相当于by_class_name

By.XPATH 相当于by_xpath

By.NAME 相当于by_name

By.TAG_NAME 相当于by_tag_name

By.CSS_SELECTOR 相当于by_css_selector

By.LINK_TEXT 相当于by_link_text

3.find_elements_by_定位方式(value)返回元素数组

用法与find_element_by_方式(value)一致,但是返回一个数组。可以通过数组的索引来访问具体的某个结果。

例如:通过class_name定位到多个元素,我想点击第一个元素

driver.find_elements_by_class_name("android.widget.RelativeLayout”)[0].click()

4.返回元素数组的另一种写法:find_elements(by,value)

用法与find_element(by,value)一致,但是返回一个数组。可以通过数组的索引来访问具体的某个结果。

例如:通过class_name定位到多个元素,我想点击第一个元素

driver.find_elements(By.CLASS_NAME,"android.widget.RelativeLayout”)[0].click()

5.通过元素定位元素

可以先找到某个元素,然后再进一步定位元素

find_element_by_class_xpath(“xxx”).find_element_by_name(“yyy")

四、元素操作

找到元素后可以对元素进行的操作,例如上面讲的进一步定位元素

1.click()

//点击操作

也可以用tab实现点击操作

driver.find_element_by_id("com.wuba.zhuanzhuan:id/ae8").click()

2.clear()

//清空输入框内容

driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").clear()

3.send(xx)

//输入框内输入内容

driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").send_keys("test content")

4.text

//获得元素的text内容

print(driver.find_element_by_xpath(" //android.widget.LinearLayout[1]//xxx").text)

四、总结

1、Appium跨平台,支持Android和IOS自动化测试。

2、Appium支持多语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure等等

3、支持原生应用,web应用和混合应用

4、仅仅支持UI测试

文章首发于:https://zhuanlan.zhihu.com/p/52964257

appium怎么操作物理返回键_这些Appium常用元素定位技巧,你掌握了几种?相关推荐

  1. appium怎么操作物理返回键_Appium Studio使用指南(windows做ios自动化,录制appium脚本)...

    点击关注,我们共同每天进步一点点! 一.简介 Appium Studio是开源Appium的增强版本,作为一款可视化测试开发工具,它提供了设备管理.应用管理.脚本录制.自动生成测试报告等功能,能帮助用 ...

  2. VUE 物理返回键的处理

    H5退出时所遇到的问题: 1.按返回键或anroid手机的物理返回键时,都不走destroy方法. 2.按物理返回键,添加popstate监听时, (1)历史记录要准确,否则会执行多次监听方法 (2) ...

  3. cordova app 监听物理返回键

    物理返回键指的是手机系统自带的返回按钮,通过cordova监听返回按钮操作,可以禁止某些页面的返回操作,以及实现点击两次返回按钮退出应用. var pageUrl = window.location. ...

  4. 混合开发监听安卓手机物理返回键

    混合开发监听安卓手机物理返回键 在用h5做混合开发过程中由于有个考试考试页面,中途不能退出,退出要添加确认操作,所以需要监听手机的返回操作,不让用户直接通过返回键返回 目前了解到混合开发中有两种方式监 ...

  5. h5移动端实现物理返回键关闭弹框而非返回上一级页面

    需求:页面中的popup弹框,可以通过物理返回键进行关闭 方案: (1)当打开弹框时,向history中添加一个空记录,并且监听history的popstate变化 (2)当弹框打开状态用户操作了返回 ...

  6. android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键

    本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){         ...

  7. popwindow 焦点问题,物理返回键截获,软键盘监听问题

    首先是setFocusable这个方法,获取焦点:如果不获取焦点,那么popwindow中的控件都没有办法获取焦点和事件响应问题. 如果获取焦点,那么popwindow就会拦截屏幕上的点击触摸事件以及 ...

  8. 通过手机物理返回键实现弹出层的隐藏

    通过手机物理返回键实现弹出层的隐藏 <template><div class="popup"><h1 @click="popup" ...

  9. JavaScript监听手机物理返回键的两种解决方法

    JavaScript监听手机物理返回键的两种解决方法 参考文章: (1)JavaScript监听手机物理返回键的两种解决方法 (2)https://www.cnblogs.com/xzzzys/p/8 ...

最新文章

  1. 首部高中《人工智能基础》教材问世,40家中学引入
  2. 生物学重复吗?还有技术重复?
  3. 推荐系统笔记(信息消费)
  4. 【CodeForces - 245H 】Queries for Number of Palindromes (带容斥的区间dp)
  5. linux中控和安卓中控哪个比较好,原厂中控和改装中控有什么区别?哪个更好?...
  6. Python工作笔记003---正则中的re.I re.M_以及m.group和m.groups的解释
  7. 学会这5种Excel颜色搭配技巧,表格想做不好看都难
  8. python在哪个方向岗位最多_Python就业方向这么多,哪些岗位最有发展?
  9. nginx 反向代理机制解决前端跨域问题
  10. STM32L051测试 (三、I2C协议设备的添加测试)
  11. 不仅仅生成图片,用GAN做无监督的异常检测
  12. 根据userAgent获取浏览器/操作系统/设备类型等信息
  13. 用python画盒图_[519]matplotlib(四)|Python中用matplotlib绘制盒状图(Boxplots)和小提琴图(Violinplots)...
  14. 第二十九章 狼心狗肺
  15. 使用RecyclerView实现瀑布流
  16. 共筑未来 | 思腾合力加入光合组织,完成国产信创兼容适配
  17. 树莓派使用排线摄像头和远程视频监控
  18. 九龙证券|近50亿资金抢筹券商龙头,知名游资杀入热门互联网股
  19. zblog php getlist,zblog使用getlist方法调用置顶文章
  20. 北京精雕现状_北京精雕 从简单到极致的发迹史

热门文章

  1. 2019年你准备学C/C++,这些硬知识你应该知道!
  2. 中新赛克数据可视化_中新赛克,加仓!
  3. ipcfg报错_ipcplwhl.dll
  4. githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法
  5. maftools|TCGA肿瘤突变数据的汇总,分析和可视化
  6. DESeq2差异基因分析和批次效应移除
  7. 第十一届蓝桥杯省赛C++组试题 第3题 求阴影面积
  8. js检测密码强度的功能实现逻辑思路及实例
  9. QtJava笔记-Qt与Java进行SSL双向认证(Qt服务端,Java客户端)
  10. 软考网络工程师笔记-综合知识1