移动端自动化-Appium元素定位

文章目录

appium是跨平台的,支持OSX,Windows以及Linux系统。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性 appium支持多语言,采用C/S设计模式,只要满足client能够发送http请求给server即可。

Appium元素定位

元素定位,就是寻找元素;而寻找元素的方式,有且只有两类;

第一类:属性定位

其包含: 标签名、文本、各类明确的属性

因为属性无法穷举,所以我们约定,只对几种属性进行定位使用:

1)content-desc ----> 对应的appium定位方式 ---> accessibility id 定位方式的值 ----> content-desc 属性的值 (有可能出现定位不到唯一值)

2)class name ---> 对应的appium定位方式 ----> class name 定位方式的值 ----> class name 属性的值(有可能出现定位不到唯一值)

3)tag name ---> 对应的appium定位方式 ----> class name 定位方式的值 ---> tag name 的值(appium2.x已经舍弃掉了)

4)resource-id ----> 对应的appium定位方式 ----> id 定位方式的值 ---> resource-id 的值(有可能出现定位不到唯一值)

5)name ----> 对应的appium定位方式 ----> name 定位方式的值 ---> name 的值(一般都是可以定位到唯一值)

页面的源码是前端开发人员可以操控,他怎么写这个页面源代码,这个页面源代码里面的元素就有什么属性;

下面的 AppiumBy 和 MobileBy 只需要用一个就行了

cpp 复制代码
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.common.mobileby import MobileBy

第二类:路径定位

利用元素和元素之间的层级关系进行定位

有两种方式:

1) xpath

2) css selector

路径的名称一定是用到标签名、补充描述、层级的表示符;

可能会遇到一些特殊情况:无论怎么定位,元素都会出现N个,都不能定位到你想要的元素;

解决方案一:使用绝对路径一定能解决;

解决方案二:元素内定位(寻找上一级的唯一属性,再定义下级的位置)

常见问题

理解appium server 和 appium inspector 以及 appium-python-client的关系

appium server 是作为⼀个服务存在;

appium inspector 是⼀个客户端,将命令发送给了 appium server,然后由appium server 将命令转化为移动设备的操作命令,从⽽实现移动设备实现⾃动化操作;

Appium-python-client 也是⼀个客户端,我们运⾏Appium-Python-Client所⽣成的代码时,其本质,也是将代码发送给了appium server,appium server 将命令转化为移动设备的操作命令;从⽽实现移动设备实现⾃动化操作;

appium inspector 在自动化测试过程中,主要是用作调试工具,本质是一个客户端。

相关推荐
恋猫de小郭16 分钟前
Android Studio Cloud 正式上线,不只是 Android,随时随地改 bug
android·前端·flutter
Python×CATIA工业智造1 小时前
基于PySide6与pycatia的CATIA绘图比例智能调节工具开发全解析
python·pycharm·自动化·catia二次开发
清岚_lxn5 小时前
原生SSE实现AI智能问答+Vue3前端打字机流效果
前端·javascript·人工智能·vue·ai问答
ZoeLandia5 小时前
Element UI 设置 el-table-column 宽度 width 为百分比无效
前端·ui·element-ui
橘子味的冰淇淋~6 小时前
解决 vite.config.ts 引入scss 预处理报错
前端·vue·scss
小小小小宇7 小时前
V8 引擎垃圾回收机制详解
前端
lauo8 小时前
智体知识库:ai-docs对分布式智体编程语言Poplang和javascript的语法的比较(知识库问答)
开发语言·前端·javascript·分布式·机器人·开源
New个大鸭8 小时前
ATEngin开发记录_4_使用Premake5 自动化构建跨平台项目文件
c++·自动化·游戏引擎
拉不动的猪8 小时前
设计模式之------单例模式
前端·javascript·面试
一袋米扛几楼988 小时前
【React框架】什么是 Vite?如何使用vite自动生成react的目录?
前端·react.js·前端框架