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

文章目录

  • Appium元素定位
    • 第一类:属性定位
    • 第二类:路径定位
  • 常见问题
    • 理解appium server 和 appium inspector 以及 appium-python-client的关系

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 只需要用一个就行了

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 在自动化测试过程中,主要是用作调试工具,本质是一个客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库,可以处理图像和视频数据。它包含了超过2500个优化过的算法,用于对图像和视频进行处理,包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言,包括C、Python、Java等&#xff0c…

在HTML当中引入Vue控件,以element-ui为例

前情:需要实现一个同时满足按天、按周、按月选择的时间选择器,但是以HTML为基础写的都不太满足我的要求,要么只能按天选择,要么就是想选择久远的时间得点很久,除非自己写捷径,所以就看上了element-ui的这个…

动静分离技术

一、HAproxy 动静分离 1、概念: HAproxy 动静分离技术是一种用于优化 Web 服务器性能和提高用户体验的策略,它通过将动态内容和静态内容分别路由到不同的后端服务器来实现,减轻服务器负载,提高网站的响应速度。 动态内容包括由…

MySQL篇---第二篇

系列文章目录 文章目录 系列文章目录一、数据库的事务二、索引是什么三、SQL优化手段有哪些一、数据库的事务 什么是事务?: 多条sql语句,要么全部成功,要么全部失败。 事务的特性: 数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性 (Du…

SylixOS BSP开发(七)

实现系统调试信息打印接口 当系统出错时或者使用内核日志时会输出一些打印信息,这最终都是调用到bspLib.c中的bspDebugMsg 这个接口来实现的,所以我们在开发BSP时,第一个要做的工作就是实现这个接口。 一般的调试信息都是通过串口来输出的&am…

linux-tools-$(uname -r) linux-headers-$(uname -r)工具安装:

linux-tools-$(uname -r) linux-headers-$(uname -r)工具安装: ebpfebpf-virtual-machine:~$ sudo apt-get install linux-tools-$(uname -r) [sudo] ebpf 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 linux…

经典目标检测神经网络 - RCNN、SSD、YOLO

文章目录 1. 目标检测算法分类2. 区域卷积神经网络2.1 R-CNN2.2 Fast R-CNN2.3 Faster R-CNN2.4 Mask R-CNN2.5 速度和精度比较 3. 单发多框检测(SSD)4. YOLO 1. 目标检测算法分类 目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与…

虚拟机Ubuntu下运行vue-element-admin项目

一.环境搭建 1.安装nodejs sudo apt install nodejs 安装完成后,查看对应的版本号 nodejs -v没有问题,会输出对应版本号,我这里是10.19.0 v10.19.0 2.安装npm sudo apt install npm安装完成查看对应的版本号,确认OK npm -…

linux中nginx配置https

一、版本适配 版本一定要适配,否则会报错各种参数定位不到不识别的错误,以下是版本适配信息,各位观客自行按照以下信息匹配版本。 Nginx 1.11.5及以上版本与OpenSSL 1.0.2及以上版本兼容。Nginx 1.15.2及以上版本与OpenSSL 1.1.1及以上版本兼…

代码随想录图论 第四天| 827.最大人工岛 127. 单词接龙

代码随想录图论 第四天 | 827.最大人工岛 127. 单词接龙 一、827.最大人工岛 题目链接:https://leetcode.cn/problems/making-a-large-island/ 思路: class Solution {int[][] position {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int dfs(int[][] grid, i…

JavaScript_Pig Game保存当前分数

上个文章我们基本上完成了摇色子和切换当前玩家的功能。 现在我们开始写用户选择不再摇骰子的话,我们将用户的当前分数存入到持有分数中! ● 首先我们应该利用一个数组去存储两个用户的分数 const scores [0, 0];● 接着我们利用数组来对分数进行累…

用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

🧸注:不要看我的文件多,那是我的其他项目,这个项目所用的文件我会全部用红框框起来,没框的部分不用管,前端两个文件,后端一个文件 📜 目录 首先,定义前后端交互接口 然…

为什么axios会有params和data两个参数

不知道大家有没有过这种感觉,突然一个问题百思不得其解,然后突然有一天就明白了。然后就感觉这个问题原来这么简单,本来想记录下来,但是又感觉这么简单的问题记录下来没啥意义。但是回过头来想一想,这个问题之前其实困…

由浅入深C系列八:如何高效使用和处理Json格式的数据

如何高效使用和处理JSON格式的数据 问题引入关于CJSON示例代码头文件引用处理数据 问题引入 最近的项目在用c处理后台的数据时,因为好多外部接口都在使用Json格式作为返回的数据结构和数据描述,如何在c中高效使用和处理Json格式的数据就成为了必须要解决…

Oracle (7)Online Redo Log Files

目录 一、Oracle Online Redo Log Files及其相关内容介绍 1、Online Redo Log Files简介 2、Online Redo Log Files特点 3、Online Redo Log Files文件组 4、多路复用文件 5、联机重做日志文件工作方式 6、LGWR什么时候写重做 7、LS和LSN 8、删除Redo文件成员 9、删除…

ZYNQ连载07-PIN设备

ZYNQ连载07-PIN设备 1. 简述 RT-Thread PIN设备 这里参看RT-Thread提供的PIN设备管理接口,简单封装了几个接口函数。 2. 实现 #include "include/drv_gpio.h" #define LOG_TAG "drv_gpio" static XGpioPs xgpiops;void rt_pin_mode(rt_…

目标检测算法改进系列之嵌入Deformable ConvNets v2 (DCNv2)

Deformable ConvNets v2 简介:由于构造卷积神经网络所用的模块中几何结构是固定的,其几何变换建模的能力本质上是有限的。在DCN v1中引入了两种新的模块来提高卷积神经网络对变换的建模能力,即可变形卷积 (deformable convolution) 和可变形…

Systemverilog中使用interface连接testbench和dut的端口

1.dut的端口声明如下,文件名为top.v: module top (input clk ,input rst_n ,input wr_n ,input rd_n ,input cs0_n ,input cs7_n ,input [15 : 0] bus_addr_in ,//UART淇″彿input rx0_d ,output tx0_d , …

JVM虚拟机:从结构到指令让你对栈有足够的认识

本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…

HarmonyOS鸿蒙原生应用开发设计- 图标库

HarmonyOS设计文档中,为大家提供了独特的图标库,开发者可以根据需要直接引用。 图标库可以分为双色图标、填充图标、线性图标。具体分为 键盘、箭头、连接状态、媒体、人、设备、索引、通信、文件、物体与工具等。 整体分类 开发者直接使用官方提供的图标…