Python Appium 元素定位方法简单介绍
Python Appium 元素定位
常用的八种定位方法(与selenium通用)
# id定位
driver.find_element_by_id()
# name定位
driver.find_element_by_name()
# xpath定位
driver.find_element_by_xpath()
# class_name定位
driver.find_element_by_class_name()
# css 定位
driver.find_element_by_css_selector()
# link定位
driver.find_element_by_link_text()
# tag定位
driver.find_element_by_tag_name()
# partial_link定位
driver.find_element_by_partial_link_text()
# 移动端 新增方法
# accessibility_id 定位
driver.find_element_by_accessibility_id()
# Android
driver.find_element_by_android_uiautomator()
# ios
driver.find_element_by_ios_uiautomation()
id定位
# resrouce-id属性是id:
driver.find_element_by_id('username')
name定位
# text属性是name driver.find_element_by_name(u'请输入用户名')
Xpath定位
如下图,使用 uiautomatorviewer.bat 获取页面元素
注意:SDK自带的uiautomatorviewer.bat无法获取xpath,需要替换一个jar包方可获取xpath。此jar包放到了QQ群:193056556中,有需要的可以进群自取。
self.driver.find_element_by_xpath("//android.widget.TextView[@text=' ']").click()
class_name定位
self.driver.find_element_by_class_name('android.view.View').click()
(注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
accessibility_id 定位
content-desc即是对应的 accessibility_id
driver.find_element_by_accessibility_id(u"我的").click()
android_uiautomator 定位
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear()
以下是代码实例
#测试异常登录-用户不存在 def test_aNoUserLogin(self): driver = self.driver
time.sleep(5)
driver.find_element_by_accessibility_id(u"我的").click() time.sleep(5) driver.find_element_by_accessibility_id(u"登录/注册").click()
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer1')
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('') time.sleep(2) driver.find_element_by_accessibility_id(u"登录").click()
time.sleep(18) get_alertMessage = driver.find_element_by_id('android:id/message').text
time.sleep(2)
if get_alertMessage == u'用户不存在':
print (u"用户不存在,用例执行成功!")
else:
print (u"用例执行失败!") def test_bNoPassLogin(self): driver = self.driver
time.sleep(5)
driver.find_element_by_accessibility_id(u"我的").click() time.sleep(5) driver.find_element_by_accessibility_id(u"登录/注册").click()
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer')
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('') time.sleep(2) driver.find_element_by_accessibility_id(u"登录").click()
time.sleep(18) get_alertMessage = driver.find_element_by_id('android:id/message').text
time.sleep(2)
print (get_alertMessage[0:5]) # if get_alertMessage == u'用户不存在':
# print u"用户不存在,用例执行成功!"
# else:
# print u"用例执行失败!"
# # 测试正常登录 def test_cLogin(self): driver = self.driver
time.sleep(5)
driver.find_element_by_accessibility_id(u"我的").click() time.sleep(5) driver.find_element_by_accessibility_id(u"登录/注册").click()
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer')
time.sleep(2) driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear() time.sleep(2)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('') time.sleep(2) driver.find_element_by_accessibility_id(u"登录").click()
time.sleep(2) # 判断是否登录成功 print (driver.find_element_by_accessibility_id(u"西藏医药销售公司(测试买家)").get_attribute('name')) nickName = driver.find_element_by_accessibility_id(u"西藏医药销售公司(测试买家)").get_attribute('name')
temp = nickName[0:2]
print (temp)
if nickName == u'西藏医药销售公司(测试买家)':
print ('登录成功!') else:
print ('登录失败!') def tearDown(self):
self.driver.close_app()
self.driver.quit()
Python Appium 元素定位方法简单介绍的更多相关文章
- appium 元素定位方法汇总
以上图为例,要定位到右下角的 我的 ,并点击 # appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_e ...
- 6.1 python+appium元素定位方式(登录app)
1.0.0 :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...
- appium元素定位总结
appium元素定位方法总结 使用uiautomator定位 driver.find_element_by_android_uiautomator(uia_string) 根据resourceId属性 ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
- python+Appium自动化:各种元素定位方法
name定位 driver.find_element_by_name('飞利浦净水').click() 测试结果报错:selenium.common.exceptions.InvalidSelecto ...
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- Appium+python自动化-元素定位uiautomatorviewer的使用
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- Python+Appium自动化测试(5)-appium元素定位常用方法
对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor.之前已经介绍过了weditor的使用,这里我将 ...
- Appium学习笔记4_元素定位方法
Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...
随机推荐
- 06:vuejs项目实战
1.1 项目说明 1.技术架构 vue.js, 模块化,工程化, 移动端 2.目录部署 Css:所有样式文件 Data:所有异步接口 Img:所有图片文件 Js:所有js文件(2.0) index.h ...
- 公网FTP(filezilla)改端口
背景:我们如果不修改ftp服务器的端口,很容易被别人测试和攻击. 配置要点:服务端端口设置.主被动设置.服务端和客户端防火墙设置 ftp服务器:filezilla ftp server 1. 监听端 ...
- ldap集成nginx
nginx版本:1.10.2 nginx安装: wget http://nginx.org/download/nginx-1.10.2.tar.gz tar zxvf nginx-1.10.2.tar ...
- bzoj 3237 连通图 - 并查集 - 线段树
Input Output Sample Input 4 5 1 2 2 3 3 4 4 1 2 4 3 1 5 2 2 3 2 1 2 Sample Output Connected Disconne ...
- topcoder srm 698 div1 -3
1.定义重复串$S=T+T$,即$S$可以表示成一个串的叠加.给定一个串$s$,可以通过删除字符.修改字符.增加字符来使得其变为重复串.问最少的次数. 思路:首先将$s$分成个串$s_{0},s_{1 ...
- Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题
最近发现云服务器上的Oracle 11g在导出时报错,如下: ... . 正在导出后期表活动. 正在导出实体化视图. 正在导出快照日志EXP-00008: 遇到 ORACLE 错误 1455ORA-0 ...
- 虚拟机极简配置manjaro gnome
一.安装gnome启动到桌面后,卸载所有不必要的软件,减少系统大小 打开[增加/删除软件],找到要删除的软件卸载 ms-office ---微软在线办公软件 Thunderbird ---邮箱 kon ...
- 【做题】TCSRM601 Div1 500 WinterAndSnowmen——按位考虑&dp
原文链接https://www.cnblogs.com/cly-none/p/9695526.html 题意:求有多少对集合\(S,T\)满足:\(S \subseteq \{1,2...n \}, ...
- IDEA新建一个Project和Module的问题
- 中文目录对 sublime text 有什么影响?
用了这软件好几个月了,一直没出现问题.最近做精简时,发现一个奇怪的问题. 相同的配置,为什么两个程序表现得不一样? 难道是哪里的配置不一样? 难道是插件被我精简得太厉害了? 难道是插件有依赖文件被我删 ...