Appium基础篇9-元素定位之by_xpath
我们继续来介绍Appium元素定位方法,有些人做过selenium自动化测试,对xpath元素定位很熟悉。他突然想用xpath来定义手机app页面元素,那么这个是否可以呢?我们在IDE环境输入driver.,后面就自动弹出各种方法,也看到了确实有xpath元素定位。本篇就来介绍xpath元素定位,一般来说,元素定位选择第一是ID,第二是class,如果class没有重复,第三是by uiautomator,第四,可能就是xpath。前面三种方法都无法定位元素的时候,xpath就闪亮登场。我们通过xpath定位手机百度底部菜单栏中的我的模块来演示xpath的写法。
1.打开UI Automator Viewer,抓取我的 元素信息。
通过这个软件,我们发现底部这一排菜单都是同一个class,唯一不同就是界面上图标不同,和index不同,这里index是索引的意思。但是这个主意哈,当前我的索引是4,底部一共有5个按钮,说明索引是从0开始算。本篇我们要学习xpath定位,但是xpath索引是从1开始计算的。利用xpath定位的思路是:先根据class定位到五个元素,然后根据索引5来精确定位到“我的”模块。
2. Python+Appium脚本实现过程。
import osimport time
from appium import webdriverapk_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) # 获取当前项目的根路径desired_caps ={}
desired_caps['platformName'] = 'Android' #设备系统
desired_caps['platformVersion'] = '6.0.1' #设备系统版本
desired_caps['deviceName'] = 'KIW-AL10' #设备名称# 测试apk包的路径
desired_caps['app'] = apk_path + '\\app\\shoujibaidu.apk'
# 不需要每次都安装apk
desired_caps['noReset'] = True
# 应用程序的包名
desired_caps['appPackage'] = 'com.baidu.searchbox'
desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
time.sleep(5) #app启动后等待5秒,方便元素加载完成
# 根据元素xpath来定位
# 点击“我的”
my_home = driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout'][5]").click()
time.sleep(2)
通过运行发现,确定定位到了我的模块,看手机效果可以证明XPATH表达式定位是成功的。为了练习xpath,我们再次用xpath来定位搜索输入框元素。你可以修改下索引数字,来点击底部其余4个主菜单。
我们来试试,利用ui automator viewer给出的index的值来定位,发现有些定位不准,定位到我的模块是没问题的。
import osimport time
from appium import webdriverapk_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) # 获取当前项目的根路径desired_caps ={}
desired_caps['platformName'] = 'Android' #设备系统
desired_caps['platformVersion'] = '6.0.1' #设备系统版本
desired_caps['deviceName'] = 'KIW-AL10' #设备名称# 测试apk包的路径
desired_caps['app'] = apk_path + '\\app\\shoujibaidu.apk'
# 不需要每次都安装apk
desired_caps['noReset'] = True
# 应用程序的包名
desired_caps['appPackage'] = 'com.baidu.searchbox'
desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
time.sleep(3) #app启动后等待3秒,方便元素加载完成
# 根据元素xpath来定位
# 点击“我的”
driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout' and @index='4']").click()
time.sleep(2)
# 点击“我的关注“
driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout' and @index='3']").click()
time.sleep(2)
# 点击“麦克风“
driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout' and @index='2']").click()
time.sleep(2)
# 点击““视频
driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout' and @index='1']").click()
time.sleep(2)
# 点击“默认主页“
driver.find_element_by_xpath("//*[@class='android.widget.FrameLayout' and @index='0']").click()
time.sleep(2)
这样来回切换点击是运行不成功,如果每次只点击一个,发现点击麦克风的index是1,但是ui automator viewer给出的是index是2,这个地方是有问题的。
总结:
很多人都说xpath运行很慢,不建议使用,这个观点我基本同意,因为如果id class都定位不了,我们可以考虑用xpath来解决。
Appium基础篇9-元素定位之by_xpath相关推荐
- python+appium手机APP自动化基础篇3-找元素定位(anroid)
1. 定位工具 前言,在环境搭建已经安装anroid-sdk,里面就自带有元素定位的工具.找到uiautomatorviewer.bat文件,位置在D:\android-sdk-windows\too ...
- Appium基础篇10-元素定位之by_accessibility_id
本篇来介绍另外一种元素定位方式,叫by_accessibility_id,它是一个什么鬼呢?因为我们在UI Automator Viewer界面上并没有找到这个字段,我可以告诉你,这个对应的字段是co ...
- Appium基础篇5-抓元素工具之UI Automator Viewer
在开始介绍元素定位之前,我们需要介绍一个工具,这个工具是Android SDK 自带的工具,叫UI Automator Viewer,可以在SDK\tools下找到这个工具并启动它,本篇,来介绍下这个 ...
- Appium基础篇11-元素操作之点击和输入
本篇开始介绍元素操作,先来看看元素点击和元素输入行为.前面我们已经知道了元素点击的方法是click(),我们直接在前面代码基础上,用send_keys()方法给输入框输入文字.结果,我这边报错了. 1 ...
- Appium基础篇15-模拟手指点击tap方法
本篇来学习下,appium中模拟手指点击方法,叫tap,有两个参数,元素位置和点击持续时间.一般语法是这样的tap((x1,y1),(x2,y2)],100), 我们通过手机百度中,利用tap方法来点 ...
- Appium 自动化测试 H5页面元素定位
简介 在现在的移动端App中,由于开发效率.需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用原生开发,需要的成本比较高,后来就出现了内嵌的H5页面.那么这些H5页面元素 ...
- Appium基础篇16-appium截图方法
这篇介绍一个截图方法,在自动化测试过程中,出现问题,自动截图是很有必要的.在appium中同样有好几种截图方法(其实就是selenium方法).我们这里介绍一个常用截图方法,该方法叫get_scree ...
- Appium基础篇14-上下左右滑屏操作swipe方法
本篇来学习webdriver.py下一个滑屏操作,这个方法叫swipe,这个方法只是手机端appium的方法,不是selenium3的方法.在介绍滑屏操作之前,你需要了解如何得到屏幕的高和宽,因为每个 ...
- 开源EDR(OSSEC)基础篇- 01 -设计定位与能力输出
前言 介绍OSSEC之前,不得不提到当前比较热门的技术EDR,近几年随着大数据SIEM系统的发展,EDR(端点威胁检测与响应)技术成为了安全界万众宠爱的骄子,广泛用于威胁检测.攻击溯源和响应处理的安全 ...
最新文章
- java旅游网站毕业论文,基于JAVA技术的旅游网站的开发.doc
- RCP中product文件的用法
- Android消息推送完美解决方案全析
- Redhat Linux网卡配置与绑定
- 使用object detection训练并识别自己的模型
- kong组件_Kong插件开发工具包
- Perfect Permutation
- 建议收藏 | 全面解析 50+条 SQL 语句性能优化策略
- 文科生能学懂python吗_文科生也能学得懂的Python入门视频
- Java基础-控制流程-5. 中断控制流程语句
- 在windows中用 netsh 命令修改ip地址网关和DNS等
- 【渝粤教育】国家开放大学2019年春季 3818-22T燃气工程施工 参考试题
- css中绝对定位和浮动的异同
- R 大数值型数据转换
- 阿里云oss 回调失败 203 Non-Authoritative Information
- 出国常用必备英语口语
- html编辑器的回车换行问题解决方案
- linux 内核更改,linux_kernel修改、编译、加载
- 奔驰S400商务型升级前排通风座椅系统,夏天必备的功能
- C#将ip地址转换成长整形数字的代码