appium簡明教程(11)——使用resource id定位

來源:互聯網
上載者:User

標籤:android   des   style   blog   http   java   

上一節乙醇帶大家瞭解了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的測試案例。

本文著作權歸乙醇所有,歡迎轉載,但請註明作者與出處,嚴禁用於任何商業用途

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.