文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

appium常用元素定位技巧是什么

2023-06-05 00:34

关注

本篇内容介绍了“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即可

三、元素定位

格式:find_element_by_定位方式(value)

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

appium常用元素定位技巧是什么

通过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()

定位元素的另一种写法: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

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

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

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

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

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

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

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

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

通过元素定位元素

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

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

四、元素操作

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

click()

//点击操作

也可以用tab实现点击操作

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

clear()

//清空输入框内容

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

send(xx)

//输入框内输入内容

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

text

//获得元素的text内容

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

“appium常用元素定位技巧是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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