3、app自动化:使用appium定位元素的方式及元素的常用操作
前提:
没有的包,要先进行对应包的安装
如:pip install Appium-Python-Client
一、定位元素,包括属性定位和xpath定位方式
a\属性定位
| 属性 | 定位方式 | 示例 |
| content-desc | AccessibilityID | driver.find_element(By.AccessibilityID,'书城') |
| Class name& Tag name | Class name | |
| resource-id(安卓) | ID | |
| name(IOS) | ID |
import time
from appium.webdriver import Remote
from appium.webdriver.common.mobileby import MobileBy as By rl = "http://127.0.0.1:4723/wd/hub"
caps = {
"platformName": "Android",
"platformVersion": "10.0.0",
"deviceName": "xxxxx",
"appPackage": "comxxxx",
"appActivity": "com.zxxx.MainActivity",
"newCommandTimeout": 10,
# "noReset": True # 注释掉,是因为我需要每次进入的时候,没有任何书籍在书架中
}
driver = Remote(url, caps) ele = driver.find_element(By.ACCESSIBILITY_ID, "书城")
b\路径定位
根据元素之间的层级关系(或者说路径)进行定位,是appium里目前适用性最高的定位方式
如:
driver.find_element(By.XPATH,'//android.widget.FrameLayout[@resourceid="android:id/content"]')
c\拓展 之 元素内定位
当元素内还包含一个或多个其他元素内,就可以先定位到该元素,然后再通过该元素去定位其下面的元素,这种方式就叫元素内定位。
下面用一段伪代码来说明:
ele=driver.find_elements(By.XPATH,xpath)
ele[1].find_element(By.ID,'xxxx')
二、元素的操作
1、元素的点击
ele.click()
2、输入
ele.send_keys('输入的值')
3、获取文本
ele.text
4、元素截图
ele.screenshot('name.jpg')
5、获取元素属性
ele.get_attribute("text")
ele.get_attribute("class")
ele.get_attribute("displayed")
ele.get_attribute("content-desc")
6、其他一些比较重要的属性
ele.location #The location of the element in the renderable canvas.
ele.size #The size of the element. print(ele.location) # 元素的位置属性 {'x': 606, 'y': 108}
print(ele.size) # 元素的尺寸属性 {'height': 115, 'width': 132} # 确定元素的操作点,一般是:元素的中心点
# 其计算公式是: (x+width/2,y+height/2)
三 appium的系统操作
1、返回 driver.back()
2、滑动 driver.swipe(700,1700,700,500)
3、截图 driver.save_screenshot("整体截图.png")
3、app自动化:使用appium定位元素的方式及元素的常用操作的更多相关文章
- APP自动化框架LazyAndroid使用手册(2)--元素自动抓取
作者:黄书力 概述 前面的一篇博文简要介绍了安卓自动化测试框架LazyAndroid的组成结构和基本功能,本文将详细描述此框架中元素自动抓取工具lazy-uiautomaterviewer的使用方法. ...
- APP 自动化之appium元素定位(三)
APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法! 1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就 ...
- 【APP自动化】Appium Android 元素定位方法 原生+H5
参考资料: http://blog.csdn.net/vivian_ljx/article/details/54410024
- App 自动化,Appium 凭什么使用 UiAutomator2?
1. UiAutomator2 是什么 可能很多人对 UiAutomator2 和 UiAutomator 傻傻分不清楚 UiAutomator 是 Google 开发的一款运行在 Android 设 ...
- App自动化之坐标定位
1.如下图定位"去看看"这个按钮的坐标,可以看到右侧bonds属性:[374,831][654,906] 2.点右上角"搜索"按钮,查看bonds属性:[615 ...
- APP自动化1——Appium+pycharm自动化环境搭建全流程
1. 安装python3,pycharm,可参考之前写的文档:https://www.cnblogs.com/chenweitoag/p/13154815.html 2. 准备以下必要工具: 基于wi ...
- App自动化测试之Appium环境安装(涉及雷电模拟器和真机)
1.安装Microsoft .NET Framework 4.5 及以上版本 2.安装Appium 官方网站地址:http://appium.io/ 我装了1.17.0版本 3.安装JDK 1.8及以 ...
- 移动端自动化测试之Appium实战
软件工程的趋势:目前大部分企业的软件研发模式是持续交付,而自动化是持续交付的根基,而且不仅仅是测试要自动化,所有的环节都在自动化,自动化是未来的方向这一点已成为行业共识. 之前咱们已经讲过了AppCr ...
- App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.App 元素定位方式 二.元素操作 三.测试混合应用 四.以代码的方式执行 Pytest 命 ...
- App自动化之dom结构和元素定位方式(包含滑动列表定位)
900×383 38 KB 先来看几个名词和解释: dom: Document Object Model 文档对象模型 dom应用: 最早应用于html和js的交互.界面的结构化描述, 常见的格式为h ...
随机推荐
- TCP/IP协议(1): IP 地址和寻址方式 —— IP 协议的基础
TCP/IP协议(1): IP 地址和寻址方式 -- IP 协议的基础 最近在重学计算机网络,给自己立一个 flag,有感而发的时候写关于 TCP/IP 协议栈的系列博客. IP 地址 IP 地址(I ...
- Trie 的一类应用
\(\text{Trie}\) 先从 [十二省联考 \(2019\)] 异或粽子 谈起 不难想到堆加可持久化 \(Trie\) 的做法 这就和 \(\text{[NOI2010]}\) 超级钢琴 类似 ...
- PHP封装自定义函数function
最近一直在看PHP教程,毕竟懂点PHP语言还是不错的选择,起初是准备制作一个三文件夹内关键词组合长尾关键词,然后用PHP做一个全站的动态聚合页面的一个PHP插件,不负有心人啊!已写好,稍晚整理会在资源 ...
- 流量加密之:MSF流量加密
流量加密之:MSF流量加密 目录 流量加密之:MSF流量加密 1 背景 2 生成SSL证书 3 使用MSF生成带证书的后门 4 验证流量 1 背景 在MSF中生成shell,并上线运行时.都是通过ht ...
- [EULAR文摘] 超声滑膜炎和腱鞘炎对已获临床缓解患者病情复发的预测
标签:eular文摘; 超声评估; 病情预测; 腱鞘炎 超声滑膜炎和腱鞘炎对已获临床缓解患者病情复发的预测 Bellis E, et al. EULAR 2015. Present ID:OP0217 ...
- CF1470E 题解 —— 询问分叉转构建虚树的复杂度证明
简要题意:给定一个长为 \(n\) 的排列 \(p\) 和一个整数 \(c\le 4\),称排列 \(p'\) 合法当且仅当 \(p'\) 可以通过 \(p\) 翻转若干个不交的区间 \([l,r]\ ...
- vitis笔记1
安装vitis2021.1 配置环境 添加环境变量 下载包 install 注意:切换到<install_dir>/Vitis//scripts/installLibs.sh,执行指令时候 ...
- python去重的几种方法
from collections import OrderedDict list1 = [1,5,2,1,10] print(list(set(list1))) #[1, 2, 10, 5] 这种方式 ...
- 7. Light (对象)
Light Mode:模式 Realtime: 实时的.就是当前光照效果是实时的,不包含烘焙效果(即使场景曾经烘焙过) Mixed: 混合的.就是既使用烘焙数据对静态对象(Lightmap stati ...
- 有趣的drop-shadow
如果写了好几个阴影,filter: drop-shadow(-0.5vmin 6vmin 0 var(--s2)) drop-shadow(-4.5vmin 10vmin 0 var(--v3));将 ...