Appium移动端自动化测试之元素定位(三)
1、name定位
driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Tel').send_keys('')
driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Pwd').send_keys('')
driver.find_element_by_name('登录').click()

所以,我们暂时可以把元素的text 属性看作name 来使用。如果你的app不能正常的定位元素,那就换其它定位方式吧。
2).id定位
driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Tel').send_keys('15817252876')
driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Pwd').send_keys('123456')
driver.find_element_by_name('登录').click()

通过UI Automator定位到的resource-id就是元素的ID、
3).classname定位

desired_caps = {
'platformName': 'Android',
'platformVersion': '5.0.0.0',
'deviceName': '127.0.0.1:62001',
'appPackage': 'com.shanjian.originaldesign',
'appActivity':'.activity.other.Activity_In'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
sleep(10)
button = driver.find_elements_by_class_name("android.widget.EditText")
print len(button)
输出结果:

(注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
4).uiautomator定位
desired_caps = {
'platformName': 'Android',
'platformVersion': '5.0.0.0',
'deviceName': '127.0.0.1:62001',
'appPackage': 'com.shanjian.originaldesign',
'appActivity':'.activity.other.Activity_In',
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
sleep(10)
#用于清除历史记录
driver.find_element_by_id("com.shanjian.originaldesign:id/edit_Tel").clear()
driver.find_element_by_android_uiautomator('new UiSelector().text("输入手机号码")').send_keys("15817252876")
driver.find_element_by_id("com.shanjian.originaldesign:id/edit_Pwd").send_keys("123456")
driver.find_element_by_android_uiautomator('new UiSelector().text("登录")').click()
注意:使用uiautomator定位时new UiSelect()中间有空格,并且最外层使用单引号,里面使用双引号,否则会报如下错误:
selenium.common.exceptions.WebDriverException: Message: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.
driver.find_element_by_android_uiautomator("new UiSelector().text('登录')").click()
5).accessibility_id定位
1.accessibility_id定位就是通过UI Automator工具查看的content-desc属性
(当然下图这个元素的content-desc属性为空,就不能通过这个属性定位了,这里只是举个例子)

2.如上图的定位,看到content-desc属性有值,就可以通过accessibility_id来定位了
格式:driver.find_element_by_accessibility_id(“content-desc的值”)
driver.find_element_by_accessibility_id(“xxx”)
Tip:content-desc值对应在web页面中就是text值,appium使用accessibility_id来定位
6).Xpath定位
需要注意的是:在appium中使用Xpath定位,标签名就是class的值。

sleep(10)
driver.find_element_by_id("com.shanjian.originaldesign:id/edit_Tel").clear()
driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.shanjian.originaldesign:id/edit_Tel']").send_keys('15817252876')
sleep(10)
driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.shanjian.originaldesign:id/edit_Pwd']").send_keys('123456')
sleep(10)
driver.find_element_by_xpath("//android.widget.TextView[@text='登录']").click()
from selenium.webdriver.common.by import By
driver.find_element_by_xpath("//android.widget.EditText[contains(@resource-id,'originaldesign')]").send_keys('15817252876')
driver.find_element(By.XPATH,("//android.widget.EditText[contains(@resource-id,'originaldesign')]")).send_keys('15817252876')
7).其他定位方法
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_css_selector()
Appium移动端自动化测试之元素定位(三)的更多相关文章
- Appium移动端自动化:元素定位uiautomatorviewer
一.启动uiautomatorviewer mac: 1.打开终端,进入Android/sdk/tools目录 2.打开uiautomatorviewer(我的路径是Android/sdk/tools ...
- RobotFramework自动化测试之元素定位
前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id.name.xpath.css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题. id和name定位 ...
- appium自动化测试之元素定位
方法一 使用SDK中附带的uiautomatorviewer来定位 在SDK安装目录下的tools下有个uiautomatorviewer.bat批处理文件点击运行 运行后(注意appium desk ...
- (appium+python)UI自动化_03_元素定位工具
前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...
- Selenium自动化测试之元素定位
步骤: 1.通过前端工具,查看元素的属性 2.通过属性定位 iddriver.findElement(By.id("kw")) namedriver.findElement(By. ...
- Appium移动端自动化测试之应用操作详解(四)
应用操作篇 1.1).安装应用 desired_caps = { 'platformName': 'Android', 'platformVersion': '5.0.0.0', 'deviceNam ...
- 移动端自动化测试之adb常用命令
今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...
- Appium移动端自动化:Appium-Desktp的使用以及定位元素方式总结
一.appium-desktop功能介绍 1.打开appium-desktop,点击start session 2.打开后,点击屏幕右上角的搜索按钮 3.然后会打开配置页面,在本地服务配置信息同上面写 ...
- APP 自动化之appium元素定位(三)
APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法! 1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就 ...
随机推荐
- UGUI 分页渐变居中效果
代码相当冗长,仅作自己记录 在此分页上修改的https://blog.csdn.net/qinyuanpei/article/details/49781133 using UnityEngine;us ...
- #51单片机#8位数码管(74HC595芯片)的使用方法
数码管基本属性:1.采用2片595驱动数码管,需要单片机3路IO口,根据数码管动态扫描原理进行显示:2.宽工作电压3.3V到5V:3.PCB板尺寸:71mm*22mm4.数码管型号:0.36 4位共阳 ...
- 让Delphi XE5跟其他版本的Delphi共存
找到Delphi XE5的安装根目录 .... \Program Files (x86)\Embarcadero\RAD Studio\12.0\bin下的cglm.ini文件, 打开cglm.i ...
- Erlang基础 -- 介绍 -- Wordcount示例演示
在前两个blog中,已经说了Erlang的历史.应用场景.特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数. 今天和群友们讨论了一个问 ...
- GO数组和切片
数组Array 定义数组的格式:var <varName>[n]<type>,n>0 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型, 不同类型的不能相互赋值 ...
- Does Windows have a limit of 2000 threads per process?
http://blogs.msdn.com/b/oldnewthing/archive/2005/07/29/444912.aspx Often I see people asking why the ...
- [转载]交换机STP协议
注:之前做一个项目,测试部使用2个公司的交换机,H3C和H公司的,H公司的交换机是OEM H3C的交换机,正常来说两者使用没有区别. 但是使用中发现,如果设备的多个对外业务网口连接的交换机的聚合网口, ...
- (转)oracle嵌套表示例
本文转载自:http://www.cnblogs.com/gisdream/archive/2012/04/13/2445291.html ----嵌套表:就是把一个表中的字段定义为一个表,这个字段表 ...
- mac 在终端使用命令行启动脚本,无法使用自己安装的python去执行脚本问题
参考了2片文章: //查看python位置 which python //先备份 1.sudo cp /usr/bin/python /usr/bin/python_cp //删除 2.sudo rm ...
- PL/SQL本地远程连接数据库
记录自己在开发中只用一次,但是容易忘记的问题,PL/SQL-ORACLE配置远程数据库访问: 1,下载PL/SQL连接工具,链接: https://pan.baidu.com/s/1kVeeLNp 密 ...