APPIUM API整理(python)---元素查找
最近在学习自动化框架appium,网上找一些API相关资料整理了一下
1.find_element_by_id
find_element_by_id(self, id_):
Finds element within this element's children by ID(通过元素的ID定位元素)
:Args: - id_ - ID of child element to locate.
用法 driver. find_element_by_id(“id”)
find_element_by_id方法,是对于那些有id而且可以互相区分的控件的操作使用,一般通过android sdk 的tools路径下的uiautomatorviewer.bat自带工具来获取,
使用这个工具首先要确保前面环境配置ok,然后确定测试机器或android模拟器处于连接状态(cmd上输入adb devices),下面是使用uiautomatorviewer.bat工具
获取resource-id
代码举例:
#点击天气应用
driver.find_element_by_id('com.huawei.android.totemweather:id/mulan_widget_currentweather_smallicon').click()
2.find_element_by_xpath
find_element_by_xpath(self, xpath):
Finds element by xpath(通过Xpath定位元素,详细方法可参阅http://www.w3school.com.cn/xpath/ )
```
:Args: xpath - xpath of element to locate. "//input[@class='myelement']" Note: The base path will be relative to this element's location. This will select the first link under this element. :: myelement.find_elements_by_xpath(".//a") However, this will select the first link on the page. :: myelement.find_elements_by_xpath("//a")
```
用法 find_element_by_xpath(“//*”)
find_element_by_xpath方法也需要使用uiautomatorviewer.bat工具来定位控件,如下图所示右边相机控件id为空,这时就需要使用xpath来定位元素了,
我们可以使用xpath用text和index来定位元素,可以这样定位相机:
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]")
driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]")
如下图的图库那个控件index和天气温度控件是相同的,都是index=7,就只能用text或text与index结合了,如:
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')]")
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')and@index='7']")
上面的代码就可以这样写
# -*-coding=utf-8 -*- from appium import webdriver
import time
desired_caps = {
'platformName' : 'Android',
'deviceName' : '76P4C15813005463',
'platformVersion' : '5.1',
#测试apk包名
'appPackage' : 'com.huawei.android.launcher',
#测试apk的launcherActivity
'appActivity' : '.Launcher',
}
#进入android系统launcher
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
time.sleep(5)
#从launcher主界面进入相机应用并退出的两种方法
driver.keyevent('3')
#xpath使用text定位控件
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]").click()
time.sleep(2)
driver.keyevent('3')
time.sleep(2)
#xpath使用index定位控件
driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]").click()
time.sleep(2)
driver.keyevent('3')
time.sleep(2) #从launcher主界面进入图库应用并退出的两种方法
#xpath使用text定位控件
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库').click()
time.sleep(2)
driver.keyevent('3')
time.sleep(2)
#xpath使用text与index一起定位控件
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')and@index='7']").click()
time.sleep(5)
driver.keyevent('3')
time.sleep(2) driver.quit()
3. find_element_by_name
find_element_by_name(self, name):
Finds element within this element's children by name【通过元素Name定位(元素的名称属性text)】
:Args: - name - name property of the element to find.
用法: driver.find_element_by_name(“name”)
find_elements_by_name方法的控件元素也需要使用uiautomatorviewer.bat工具来定位,如上面例子中带有text信息的控件就可以直接使用,如
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]")
driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]")
可以使用
driver.find_element_by_name('相机')
脚本如下
from appium import webdriver
import time
desired_caps = {
'platformName' : 'Android',
'deviceName' : '76P4C15813005463',
'platformVersion' : '5.1',
#测试apk包名
'appPackage' : 'com.huawei.android.launcher',
#测试apk的launcherActivity
'appActivity' : '.Launcher',
}
#进入android系统launcher
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
time.sleep(5) #name方法进入相机应用
time.sleep(2)
driver.find_element_by_name("相机").click()
time.sleep(5) driver.quit()
4. find_element_by_class_name
find_element_by_class_name(self, name):
Finds element within this element's children by class name(通过元素class name属性定位元素 )
:Args: - name - class name to search for.
用法 driver. find_element_by_class_name(“android.widget.LinearLayout”)
find_element_by_class_name方法其实很不实用,一般控件的class基本相同,如下图上面的应用控件class都是android.widget.TextView,所以不好区分元素。
5. find_element_by_link_text
find_element_by_link_text(self, link_text):
Finds element within this element's children by visible link text.
通过元素可见链接文本定位
:Args:
- link_text - Link text string to search for.
用法 driver.find_element_by_link_text(“text”)
6. find_elements_by_link_text
find_element_by_link_text(self, link_text):
Finds a list of elements within this element's children by visible link text
通过元素可见链接文本定位,含有该属性的所有元素
:Args:
- link_text - Link text string to search for.
用法 driver.find_elements_by_link_text(“text”)
7. find_element_by_partial_link_text
find_element_by_partial_link_text(self, link_text):
8. find_element_by_tag_name
find_element_by_tag_name(self, name):
Finds element within this element's children by tag name.
通过查找html的标签名称定位元素
:Args:
- name - name of html tag (eg: h1, a, span)
用法 driver.find_element_by_tag_name(“name”)
9. find_element_by_css_selector
find_element_by_css_selector(self, css_selector):
‘Finds element within this element's children by CSS selector.
通过CSS选择器定位元素
:Args:
- css_selector - CSS selctor string, ex: 'a.nav#home'
’
10. find_element_by_ios_uiautomation
find_element_by_ios_uiautomation(self, uia_string):
Finds an element by uiautomation in iOS.
通过iOS uiautomation查找元素
:Args:
- uia_string - The element name in the iOS UIAutomation library :Usage:
driver.find_element_by_ios_uiautomation('.elements()[1].cells()[2]')
用法dr. find_element_by_ios_uiautomation(‘elements’)
11. find_element_by_accessibility_id
find_element_by_accessibility_id(self, id):
Finds an element by accessibility id.
通过accessibility id查找元素
:Args:
- id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize :Usage:
driver.find_element_by_accessibility_id()
用法driver.find_element_by_accessibility_id(‘id’)
学习地址:
http://blog.csdn.net/bear_w/article/details/50330565
http://blog.csdn.net/bear_w/article/details/50330565
APPIUM API整理(python)---元素查找的更多相关文章
- APPIUM API整理(python)---其他辅助类
App运行类 1.current_activity current_activity(self): 用法: print(driver.current_activity()) Retrieves the ...
- APPIUM API整理(python)---操作类
前言:android手机大家都很熟悉,操作有按键.触摸.点击.滑动等,各种操作方法可以通过api的方法来实现. 参考博文:http://blog.csdn.net/bear_w/article/det ...
- (转载)中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- 中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- 移动端自动化测试(二)之 Appium常用的API(python)函数介绍
上一章节已经介绍了Appium的环境搭建,其实只要掌握了Appium的工作原理,前期的准备工作和安装过程是比较简单的.那么当我们搭建好Appium环境后接下来做些什么呢?通常思路是开始appium的第 ...
- Python+Appium自动化测试(9)-自动选择USB用于传输文件(不依赖appium对手机页面元素进行定位)
一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选 ...
- 篇4 安卓app自动化测试-Appium API进阶
篇4 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...
- appium API接口
appium API接口 标签(空格分隔): appium常用api 1.contexts contexts(self) 返回当前会话的上下文,使用可以识别H5页面的控件: driver.contex ...
- WebDriver元素查找方法摘录与总结
WebDriver元素查找方法摘录与总结 整理By:果冻迪迪 selenium-webdriver提供了强大的元素定位方法,支持以下三种方法. • 单个对象的定位方法 • 多个对象的定位方法 • 层级 ...
随机推荐
- 【分享】DevDocs API Documentation
http://devdocs.io/ 这是一份综合性的在线API列表,很全,方便查找.
- 使用Navicat for MySQL
1.打开Navicat for MySQL 2.新建连接 3.新建数据库 4.在新建的数据库上运行SQL文件
- iOS开发之--storyboary下,拖拽一个tableview/collectionView/view 等,顶端下沉64个像素的处理方法
大家可能会发现,在sb或者xib里面拖拽一个tableview/collectionview/view的,顶端会自动下沉64个像素,也就是说,运行在模拟器上去,自导航下面又自动下沉了64个像素, 那是 ...
- 《转》架设一个BLOG需要整合多少东西?
本文转载自大CC 1 Wordpress本身需要花费功夫的地方不多,比较容易,但Themes要花不少功夫调整,有时还得改CSS.推荐几个Wordpress Themes网站: - http://the ...
- 深入java虚拟机(一) 虚拟机内存结构
java虚拟机所管理的内存区域(运行时数据区)主要分为如下几个部分:堆(heap).方法区(method area).虚拟机栈(VM stack).本地方法栈(native method stack) ...
- windosw启动redis
1.cmd控制台 cd C:\Program Files\Redis 2.redis-server.exe redis.windows.conf 3. ok!!
- FineReport---样式
1.单元格样式 单元格样式说明 2.预定义样式 预定义样式说明 这里发现,改了样式,服务器更新Congfig,需要重启服务器,这样比较麻烦 我的操作是,先设置预定义样式,然后再点击自定义样式,操作是就 ...
- cygwin简介,安装及卸载(体验UNIX & Linux环境)
对于爱好者或初学者来说,为了体验UNIX & Linux环境,去安装虚拟机或双系统稍显麻烦,cygwin是一个很好的选择 具/原料 安装windows的电脑一台(可以联网) 法/步骤 ...
- Oracle数据库的归档模式(archivelog mode)
Oracle数据库可以运行在2种模式下: 归档模式(archivelog) 归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模 ...
- Python游戏引擎开发(五):Sprite精灵类和鼠标事件
本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它. 它中文原意是"精灵",只是在不同人的眼中,它所表示的意义不同. 比方说在 ...