Appium Python 五:元素定位

总结

单个元素定位:

driver.find_element_by_accessibility_id(id)
driver.find_element_by_android_uiautomator(uia_string)
driver.find_element_by_class_name(name)
driver.find_element_by_css_selector(css_selector)
driver.find_element_by_id(id_)
driver.find_element_by_ios_predicate(predicate_string)
driver.find_element_by_ios_uiautomation(uia_string)
driver.find_element_by_link_text(link_text)
driver.find_element_by_name(name)
driver.find_element_by_partial_link_text(link_text)
driver.find_element_by_tag_name(name)
driver.find_element_by_xpath(xpath)

多个元素定位:

driver.find_elements_by_accessibility_id(id)
driver.find_elements_by_android_uiautomator(uia_string)
driver.find_elements_by_class_name(name)
driver.find_elements_by_css_selector(css_selector)
driver.find_elements_by_id(id_)
driver.find_elements_by_ios_predicate(predicate_string)
driver.find_elements_by_ios_uiautomation(uia_string)
driver.find_elements_by_link_text(text)
driver.find_elements_by_name(name)
driver.find_elements_by_partial_link_text(link_text)
driver.find_elements_by_tag_name(name)
driver.find_elements_by_xpath(xpath)

其他:

还有两个私有的方法:

driver.find_element(by, value)

driver.find_elements(by, value)

单个元素定位和多个元素定位的区别就是,单个元素定位返回是单个元素,多个元素定位返回的是包含多个元素的一个列表。

这里其他部分的私有方法,因为属于私有的,一般不直接使用。

详细介绍

1. find_element_by_id

用法:通过元素id来查找元素

示例:driver.find_element_by_id(‘com.android.calculator2:id/digit8‘)

这里元素id和 UIAutomatorView 中该元素的 resource id是一致的。

这里需要注意的是,Android 4.3 以上系统才会有 resource id。我尝试过 Android 4.2.2系统,结果resource id这里一直是空。

2. find_element_by_accessibility_id(id)

示例:driver.find_element_by_accessibility_id("delete")

这里的accessibility id 跟 UIAutomatorView 中该元素的 content-desc 是一致的。

3. find_element_by_name(name)

用法:通过元素 name 来查找元素

示例:driver.find_element_by_name("Create a new contact")

这里的name跟 UIAutomatorView 中该元素的 Text是一致的。

需要注意的是,最好不要用这种定位方法,因为 Appium v1.0 已经不建议使用通过name进行定位的方式。

4. find_element_by_class_name(name)

用法:通过元素class name来查找元素

示例:driver.find_element_by_class_name("android.widget.Button")

这里的class name跟 UIAutomatorView 中该元素的 class 是一致的。

需要注意的是,由于 class name不是唯一的,所以可能存在一个页面上有多个元素具有相同的class name。

5. find_element_by_xpath(xpath)

用法:通过元素xpath来查找元素

示例:driver.find_element_by_xpath("//android.widget.Button[@text=‘8‘]")

通过xpath进行定位的好处是,比较绝对,任何一个元素都可以通过xpath进行定位。

原始的uiautomatorView是看不到 xpath这个属性的,网上有扩展uiautomatorView使其直接显示xpath的教程。

可以直接下载扩展版的 LazyUiAutomatorViewer:自动化测试中级篇——LazyUiAutomatorViewer插件开发和使用说明

扩展版本的LazyUiAutomatorViewer可以看到最下方有xpath属性。当然如果熟悉xpath语法,自己也可以直接通过层次关系写出元素的xpath。

6. find_element_by_android_uiautomator(uia_string)

用法:通过 UiAutomator 中的定位来进行定位

示例:driver.find_element_by_android_uiautomator(‘new UiSelector().resourceId("com.android.calculator2:id/digit8")‘)

这里可以通过UiSelector()的多种方式进行定位,上面只是举例采用了 resourceId而已。

其他定位方式

find_element_by_css_selector(css_selector)

find_element_by_tag_name(name)

find_element_by_link_text(link_text)

find_element_by_partial_link_text(link_text)

时间: 2024-11-08 03:01:05

Appium Python 五:元素定位的相关文章

Appium+python自动化-元素定位uiautomatorviewer的使用

前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性. 一.启动uiautomatorviewer.bat 1.打开目录D:\androidsdk\android-sdk-windows\tools 14

Appium+python (3) 元素定位(1)

打开问价夹下面的uiautomatorviewer: 夜神模拟器里的App后,回到uiautomatorviewer: 点击左上角的Device Screenshot,这时你的夜神模拟器页面就会显示在这里,右侧就是对应的定位信息了,我们主要依靠右下角的Node Detail信息进行定位. 如果你有selenium的基础,那接下来介绍的基本一致,只是换了个方法而已: text find_element_by_name(u"视频") id find_element_by_resource-

Appium(十):元素定位(加强版)

1. 元素定位 写完上一篇元素定位的博客,发现实用性基本为零.这几天真的烦死我了,一直在找资料,还去看了一遍appium官网文档.最后结合着selenium的定位方法,测试出几种可行的元素定位方法. 1.1 层级定位 什么是层级定位呢? 在很多的自动化中如果只是靠简单的定位是没有办法完成自动化的.有的元素的id.name.className都是一样的,xpath定位效率低下,并且在appium中,可以使用的属性非常少,这个时候我们就需要使用层级定位了. 我们可以看到,QQ天气和微视的class都

python selenium 元素定位(三)

上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到这个元素,我们从能对这个元素进行操作,那么我们下来看看如何来定位元素. selenium 提供了8中元素定位的方法(大家要学习元素的定位,首先可以学习下前端的基础知识,这样有利于我们学习自动化测试,大家可以看一下:http://www.runoob.com/) find_element_by_id

selenium+python之元素定位方式介绍

网页自动化测试最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以今天来总结下Selenuim+Python最基本的几种定位方式及实例说明, 以百度搜索输入框为例,用谷歌浏览器具体说明各个定位方式的用法. 1.导入selenium包的webdriver方法 输入 from selenium import webdriver 2.从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠 输入 from time import sleep

Robotframework + Appium 之常用元素定位方法

任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀! 好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下面再单独介绍下 Robotframework-AppiumLibrary常用元素定位方法,其实它们的思想是一样的,只是格式上有些差异,详情如下: AppiumLibrary需要在应用程序中查找元素的所有关键字都使用参数locator.当提供locator值时,它将与特定元素类型的键属性进行匹配. 常

java selenium (五) 元素定位大全

页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 在自动化测试过程中, 测试程序通常的操作页面元素步骤 1. 找到Web的页面元素,并赋予到一个存储对象中 (WebElement) 2. 对存储页面元素的对象进行操作, 例如:点击链接,在输入框中输入字符等 3. 验证页面上的元素是否符合预期 通过这三个步骤, 我们可以完成一个页面元素的操作, 找

Python+Selenium元素定位不到的问题及解决办法

在做Web自动化测试的时候经常会遇到元素定位不到的问题,结合实例总结一下原因和解决方法: 1.由于iFrame或者Frame的原因无法定位 实例:163邮箱登录页面,发现邮箱和密码的inputbox识别不到,登录btn也识别不到 初始脚本: 原因分析: 查看页面发现是这三个元素是嵌入的iframe里边的,WebDriver只能识别一个页面中的元素,对于嵌入页面的元素是无法直接识别到的,如下图: 解决方案: 当元素处于iframe中,需要先跳转到iframe中才能被识别,如下: 调用_switch

appium+python自动化30-list定位(find_elements)

前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位一组元素,再通过下标取出元素,这样也是可以定位到元素的. 单数与复数 1.find_element开头的是13种单数定位 2.find_elements开头是13种复数定位 定位一组对象 1.对比用单数定位find_element和复数定位find_elements定位元素的结果 # coding: