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移动端自动化测试之元素定位(三)的更多相关文章

  1. Appium移动端自动化:元素定位uiautomatorviewer

    一.启动uiautomatorviewer mac: 1.打开终端,进入Android/sdk/tools目录 2.打开uiautomatorviewer(我的路径是Android/sdk/tools ...

  2. RobotFramework自动化测试之元素定位

    前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id.name.xpath.css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题. id和name定位 ...

  3. appium自动化测试之元素定位

    方法一 使用SDK中附带的uiautomatorviewer来定位 在SDK安装目录下的tools下有个uiautomatorviewer.bat批处理文件点击运行 运行后(注意appium desk ...

  4. (appium+python)UI自动化_03_元素定位工具

    前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...

  5. Selenium自动化测试之元素定位

    步骤: 1.通过前端工具,查看元素的属性 2.通过属性定位 iddriver.findElement(By.id("kw")) namedriver.findElement(By. ...

  6. Appium移动端自动化测试之应用操作详解(四)

    应用操作篇 1.1).安装应用 desired_caps = { 'platformName': 'Android', 'platformVersion': '5.0.0.0', 'deviceNam ...

  7. 移动端自动化测试之adb常用命令

    今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...

  8. Appium移动端自动化:Appium-Desktp的使用以及定位元素方式总结

    一.appium-desktop功能介绍 1.打开appium-desktop,点击start session 2.打开后,点击屏幕右上角的搜索按钮 3.然后会打开配置页面,在本地服务配置信息同上面写 ...

  9. APP 自动化之appium元素定位(三)

    APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法! 1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就 ...

随机推荐

  1. 学习动态性能表(5)--v$session

    学习动态性能表 第五篇--V$SESSION  2007.5.29 在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcch ...

  2. 一步一步建立 webpack 4 项目

    一步一步建立 webpack 4 项目 cnpm init -y cnpm i webpack --save-dev cnpm i webpack-cli --save-dev 修改 package. ...

  3. FPGA前世今生(三)

    上期介绍了关于FPGA的IOB单元,这期我们介绍一下FPGA内部的其他资源,这些都是学好FPGA的基础.不管前世的沧桑,还是后世的风光,我们都要把我现在的时光,打好基础,学好FPGA. 大多数FPGA ...

  4. 多线程设计模式(三):Master-Worker模式

    Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务:Worker进程,负责处理子任务.当Worker进程将子任务处理完成后 ...

  5. 1110 Complete Binary Tree

    1110 Complete Binary Tree (25)(25 分) Given a tree, you are supposed to tell if it is a complete bina ...

  6. PHP5.6 安装Yaf 2.3.5

    Yaf 安装 PHP5.6 安装Yaf 2.3.5 1.下载 https://github.com/laruence/yaf 2.phpize /usr/bin/phpize 3.配置 ./confi ...

  7. 浏览器访问IPv6地址

    http://[IPv6]:port/index.html http://[3ffe:3201:1200:1::91]:8080/index.html 目前现在的网络运营商基本都不支持基于IPv6地址 ...

  8. PHP函数(一)-变量

    1.全局变量 <?php $a = 1; $b = 2; function test(){ echo $a + $b."<br>"; //运行结果为0 } tes ...

  9. Python之二维数组N*N顺时针旋转90度

    需求:把一个二维数组顺时针旋转90度,现实数据的替换. 比如把4*4的二维数组顺时针旋转90度 原始数据是一个嵌套列表:[['A', 'B', 'C', 'D'], ['A', 'B', 'C', ' ...

  10. MongDB安装使用

    4.MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.m ...