当前位置: 首页 > news >正文

移动端自动化-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.lryc.cn/news/207489.html

相关文章:

  • menuconfig 图形化配置原理说明三
  • Ansible简介
  • Tomcat+nginx负载均衡和动静分离
  • 全景环视AVM标定
  • 【JavaScript】leetcode链表相关题解
  • 洞察运营机会的数据分析利器
  • 使用Python实现文字的声音播放
  • gulp自动化构建
  • java时间解析生成定时Cron表达式工具类
  • JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)
  • 【软件测试】了解JUnit单元测试框架常用注解
  • 【广州华锐互动】三维全景3D消防科普展馆
  • 某大型车企:加强汽车应用安全防护,开创智能网联汽车新篇章
  • LLVM学习笔记(50)
  • rpc入门笔记0x01
  • web - Tomcat服务器
  • 后端接口返回常见的状态码
  • 50.MongoDB快速入门实战
  • 一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版
  • 图论基础和表示
  • STM32 音频ADC转wav格式
  • 面试中经常问道的问题二
  • SQL UPDATE 语句(更新表中的记录)
  • js节流和防抖
  • 权限系统设计(转载)
  • 【机器学习合集】标准化与池化合集 ->(个人学习记录笔记)
  • Dockerfile文件自动化生成R4L镜像
  • 基于SSM的居家养老系统
  • [C#基础训练]FoodRobot食品管理部分代码-2
  • docker部署rabbitmq的坑