APP定位元素几种方法

APP元素定位和操作

webdriver 提供了八种元素定位方法:

在 Python 语言中对应的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
Appium 完全继承了 WebDriver 中所定义的这些方法,除此之外对其进行了扩展,以便适合移动端对象的定位与操作

定位详解

1.常用定位方式:

通过id定位

(取resource-id的值):

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

也可以直接用id后面的内容driver.find_element_by_id("azo")

通过class_name定位

(取class的内容)

driver.find_element_by_class_name("android.widget.RelativeLayout")

通过xpath定位

(取xpath得内容)

driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.widget.XXX")

通过text定位

(需要使用uiautomator的定位方式,使用text的内容)

driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+关注\")")

使用这里需要注意一下,通过text定位的结果是个list,不能直接click。所以如果要点击需要取数组的值,比如下面是点击找到的第一个元素

driver.find_elements_by_android_uiautomator("new UiSelector().text(\"+关注\")")[0].click()

通过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定位

web view容器中的html页面可以用name定位,native并没有name属性

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")

原文地址:https://www.cnblogs.com/zenghongfei/p/11745696.html

时间: 2024-08-29 22:28:50

APP定位元素几种方法的相关文章

使用Selenium对网页元素进行定位的诸种方法

使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了,下面我们来了解一下如何在查找元素. 3.1 查找和定位网页元素 在上一篇的示例中,我们就演示了如何通过find_element_by_id()方法,根据元素的id值来定位页面元素. 除了根据元素的id值来查找元素外,Selenium还提供了很多查找元素的方法: 从上图中可以看到,Selenium提

判断元素16种方法expected_conditions

前言 标签(空格分隔): 判断元素 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法,这些方法是逢面试必考的!!! expected_conditions 一般也简称为EC,本篇先介绍下有哪些功能: 一.功能介绍和翻译: title_is:判断当前页面的title是否完全等于(==)预期字符串,返回是布尔值 title_contains 判断当前页面

实现滚动定位的三种方法

Web页面的定位,据我所知,有三种:一.锚点定位:二.通过js的window.scroll(x,y)或window.scrollTo(x,y):三.通过js的window.scrollBy(x,y). 锚点定位,缺点: 定位不准确,而且有兼容性问题. 所以,大多数情况下用第二种或第三种方法. 注:以下两种方法的代码均可以直接使用,不依赖于任何第三方库或框架. 下面分析下第二种方法的实现原理: 核心:window对象的两个属性:scrollTop, offsetTop. 看下这两个属性的区别: 该

定位元素的等待方法

1.显式等待: public static void waitForLoad(WebDriver driver, final By locator, int timeOut) {     WebDriverWait wait = new WebDriverWait(driver, timeOut);  // timeOut为等待时间,单位秒      wait.until(new ExpectedCondition<Boolean>() {          public Boolean ap

解决网页元素无法定位的几种方法

备注: 若出现手动和自动不一样,请用自动打开的页面查看元素 一. 元素未加载出来,此时可以使用显示等待或者隐式等待 显示等待如下: t = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id('u1')) 设置超时时间为10秒,即最长等待时间为10秒,若10秒内依旧没加载出来,则返回timeout超时的报错,10秒内检测到了u1这个元素,则立即执行下面的动作 隐式等待如下: driver.implicitly_wait(1

webdriver实例14-Xpath定位的几种方法

个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素.在正式开始使用XPath进行定位前,我们先了解下什么是 XPath.XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素. 假设我们现在以图(2)所示HTML代码为例,要引用对应的对象,XPath语法如下: 图(2) 绝对路径写法(只有一种),写法如下: 引用页面上的form元素(即源码中的第3行):/html/body/form[1] 注意:1

iOS 之 退出app(项目)的几种方法

路漫漫其修远兮,吾将上下而求索.也算是对程序员的一种真实写照了吧. 今天想研究一下iOS中退出项目的方法,说是今天,其实也关注并去了解很久了.只是始终找不到自己认为很好的方法.今天就先把自己了解的列举一下,以后如果还能找到认为更好的,就在补充吧. 这里是我们在项目的AppDelegate中普遍写到的一句代码(至于扩展和丰富,我们暂不去深究): p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }

LR录制手机APP脚本的一种方法

这段时间有个项目是我们的平台对接手机APP约车功能,公司提供接口给手机APP开发,之前没有测试接口,所以当别人说要验证性能的时候,我有点蒙了,但是也比较激动,因为我一直很想从事性能测试的工作,抓住这个机会小研究下,今天终于把脚本录制成功,并可以跑并发了,至于最后的结果是不是对的,还有待研究. 今天上班就跟我们经理说,这段时间有没有性能要求测试的项目,希望分配给我,可是好像很少那种项目的样子,有点失望呀. 废话不多说.进入正题,录制手机APP测试服务器的方法应该很多,网上查询了一把,找到了一个我可

ios 客户端定位的3种方法

1.客户端通过IP地址定位 http://int.dpool.sina.com.cn/iplookup/iplookup.php 输出:城市 1 -1 -1 中国 广东 深圳 2.客户端获取经纬度,调用服务器接口获得位置 3.客户端获取经纬度,自己查找位置 1)iOS 地理位置反编码,只测试出国内 输出:详细位置,不准确 中国广东省深圳市福田区香蜜湖街道东海花园二期福禄居(东区)香蜜湖东亚国际风情街 2)百度api,好像也只能国内 http://api.map.baidu.com/geocode