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")
APP元素定位和操作的更多相关文章
- appium 元素定位与操作:
一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium I ...
- Appium+Python之元素定位和操作
一.常用识别元素的工具 uiautomatorviewer:Android SDK自带的一个工具,在tools目录下 二.元素定位 1.格式:find_element_by_定位方式(va ...
- XP定位(APP元素定位)
Appium app自动化测试经验分享-Xpath定位总结 在我看来,自动化测试中元素定位的倚天剑和屠龙刀莫过于 Xpath和CSS,但CSS只用于Web(之前已经分享过),这次就分享下Xpath的定 ...
- App元素定位三种方法
来自博客: http://testingpai.com/article/1595507262082 以下方法操作前必须确保有手机设备连入电脑,检测是否有手机连入命令 adb devices 第一种:A ...
- App元素定位
1.元素定位(采用Appium-desktop自带的工具) 1.1将初始化参数复制进去校验json格式正确且保存后,点击start session 初始化参数来源如下: # 定义启动设备需要的参数 d ...
- 3 - Selenium元素定位和操作
3.1定位 <button id="gbqfba" aria-label="Google Search" name="btnK" cl ...
- appium元素定位及操作
1.测试用例准备 数据准备 前提条件 操作步骤 预期结果 2.TestNG 用例组织:@Test @Before Class 结果验证:Assert 数据驱动:@DataProvide ...
- 页面元素定位及操作--xpath
简介: 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. /xxx 页面输出 / ...
- selenium知识思维导图|从元素定位到操作断言,助你快速入门自动化测试
为什么要进行自动化测试? 缩短测试周期,节省成本. 避免人为出错,提高准确性和可靠性. 获取需求覆盖率,代码覆盖率,提供衡量软件质量的指标. 自动化测试的条件? 手工测试完成后. 项目周期长,需求稳定 ...
随机推荐
- python 安装模块之pip install +模块名的换源写法
1.采用国内源,加速下载模块的速度2.常用pip源(上一篇博客介绍过):– 豆瓣:https://pypi.douban.com/simple– 阿里:https://mirrors.aliyun.c ...
- C - 小明系列故事――捉迷藏 HDU - 4528 bfs +状压 旅游-- 最短路+状压
C - 小明系列故事――捉迷藏 HDU - 4528 这个题目看了一下题解,感觉没有很难,应该是可以自己敲出来的,感觉自己好蠢... 这个是一个bfs 用bfs就很好写了,首先可以预处理出大明和二明能 ...
- 一分钟html页面倒计时可精确到秒
<!doctype html> <html> <head> <meta charset="utf-8"> </head> ...
- 【Scala】代码实现Actor多种需求
文章目录 简单实现Actor并发编程 使用Actor实现发送没有返回值的异步消息 使用Actor实现不间断消息发送 用react方法替代receive方法接收消息 结合case class,通过匹配不 ...
- 【Hadoop离线基础总结】Hue的简单介绍和安装部署
目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...
- Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转
分析以下需求,并用代码实现 项目根路径下有text.txt文件,内容如下 我爱黑马 123456 利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中 654321 马黑爱我 ...
- 【matlab 基础篇 01】快速开始第一个程序(详细图文+文末资源)
快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 文章目录 1 软件安装 2 打开软件 3 编写程序 3.1 基础步骤 3.2 添加PATH 3.3 命令行模式 4 ...
- Gitlab升级记
一: 验证gitlab备份是否可用 这里所使用的操作系统环境全部都基于Cetnos7, 防火墙以及selinux全部关闭. 1. 另外找一台机器,安装与服务器版本相同的gitlab,根据原服务器数据的 ...
- abp web.mvc项目中的菜单加载机制
abp中的菜单加载机制 在abp中菜单的定义与我们传统写的框架不一样,它是在编写代码的时候配置,而我们一般写的通用权限管理系统中,是后期在后台界面中添加的.这一点有很大不同.abp关于菜单的定义及管理 ...
- RxJava之并发处理(SerializedSubject)
在并发情况下,不推荐使用通常的Subject对象,而是推荐使用SerializedSubject,并发时只允许一个线程调用onnext等方法! 官方说明: When you use an ordina ...