appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
来源:互联网 发布:php判断文件编码格式 编辑:程序博客网 时间:2024/06/06 03:04
上一节乙醇带大家了解了appium的定位策略。实际上appium的控件定位方式是完全遵守webdriver的mobile扩展协议的。
这一节将分享一下如何使用resource id来定位android策略。
什么是resource id,这个不属于本文的范畴,大家可以点这里了解。
我们可以有两种方式来使用resource id进行定位:
使用 findElement(By.id("resourceId")) 的方式。这也是原生的webdriver定义的方法,不过竟然在appium的官方文档里没有提及,属于隐藏技;
使用 find_elements_by_android_uiautomator('new UiSelector().resourceId("the_id")') 的方式;关于uiautomator定位后面的教程会展开讲解;
从上面的代码片段可以看到,使用 find_element_by_id 的方式进行定位是最简便的。
那么怎么获取控件的resource id呢,使用uiautomatorviewer就可以了。具体方法如下图所示。
现在就以上图所示的android原生计算器程序为例,看一下每种语言是如何实现点击【9】这个按钮的。
目的
点击计算器上的【9】这个按钮。该按钮的id是com.android.calculator2:id/digit6
。先甜后苦,从ruby开始。
本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途
Ruby篇
require 'appium_lib'caps = { caps: { platformName: 'Android', appActivity: '.Calculator', appPackage: 'com.android.calculator2' }, appium_lib: { sauce_username: nil, sauce_access_key: nil, debug: true} }dr = Appium::Driver.new(caps).start_driverdr.find_element(id: 'com.android.calculator2:id/digit9').click
Python篇
#coding:utf-8from appium import webdriverfrom time import sleepdesired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '4.4'desired_caps['deviceName'] = 'Android Emulator'desired_caps['app'] = 'Calculator.apk'desired_caps['appPackage'] = 'com.android.calculator2'desired_caps['appActivity'] = '.Calculator'dr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)sleep(3)dr.find_element_by_id('com.android.calculator2:id/digit9').click()
Java篇
//新建一个FindById类位于info.itest.www package下面package info.itest.www;import io.appium.java_client.AppiumDriver;import java.net.MalformedURLException;import java.net.URL;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;public class FindById { public static void main(String args[]) throws MalformedURLException { DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability(CapabilityType.BROWSER_NAME, ""); cap.setCapability("platformName", "Android"); cap.setCapability("deviceName", "Android Emulator"); cap.setCapability("platformVersion", "4.4"); cap.setCapability("appPackage", "com.android.calculator2"); cap.setCapability("appActivity", ".Calculator"); AppiumDriver dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); dr.findElement(By.id("com.android.calculator2:id/digit9")).click(); }}
如果读者对webdriver很熟悉的话,那么掌握这个方法是非常简单的。如果对webdriver不熟悉,那么可以参考乙醇的webdriver实用指南,先学习一下webdriver的基础知识。
这一节我们写了一些脚本去进行控件定位,在实际的项目中,这些没有任何断言的脚本是基本上无法完成测试用例的功能的。
先卖个关子,下下一节乙醇将会带大家写第一个appium的测试用例。
那么下一节我们将学习如何使用class name进行定位。
本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途
- appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
- appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
- appium简明教程(10)——控件定位基础
- appium简明教程(10)——控件定位基础
- Appium之“使用 resource id 定位”
- appium – 使用resource id定位
- appium简明教程(2)——appium的基本概念
- appium简明教程(2)——appium的基本概念
- appium简明教程(2)——appium的基本概念
- appium简明教程(2)——appium的基本概念
- appium简明教程(2)——appium的基本概念
- appium简明教程(2)——appium的基本概念
- Appium使用教程(五)——元素定位(1)
- appium简明教程(7)——Desired Capabilities详解
- appium简明教程(8)——那些工具
- appium简明教程(7)——Desired Capabilities详解
- appium简明教程(8)——那些工具
- appium简明教程(8)——那些工具
- [零基础学Python]有容乃大的list(4)
- appium简明教程(10)——控件定位基础
- ADT安装Genymotion的eclipse插件安装及错误解决办法
- Marva Collins 的“积极学习法”
- [LeetCode]88.Merge Sorted Array
- appium简明教程(11)——使用resource id定位(仅支持安卓4.3以上系统)
- hdu1873 看病要排队 (优先队列)
- makefile 中 $@ $^ %< 使用
- 公司经验
- 如何查看python selenium的api
- [零基础学python]用Python操作数据库(2)
- [零基础学python]用Python操作数据库(3)
- 类扫描的注解
- PAT 03-2. List Leaves (25)