1. 程式人生 > >[Android測試] AS+Appium+Java+Win自動化測試之三: 基礎知識和Appium介面

[Android測試] AS+Appium+Java+Win自動化測試之三: 基礎知識和Appium介面

一、把上一章的demo先看懂

AndroidContactsTest.java

public class AndroidContactsTest {

    //Driver
    private AppiumDriver<AndroidElement> driver;


    /**
     * 配置啟動driver
     * @throws Exception
     */
    @Before
    public void setUp() throws Exception {

        File classpathRoot = new File(System.getProperty("user.dir"
)); //app的目錄 File appDir = new File(classpathRoot, "/src/main/java/apps/"); //app的名字,對應你apps目錄下的檔案 File app = new File(appDir, "ContactManager.apk"); //建立Capabilities DesiredCapabilities capabilities = new DesiredCapabilities(); //設定要除錯的模擬器的名字 capabilities.setCapability("deviceName"
,"minote"); //設定模擬器的系統版本 capabilities.setCapability("platformVersion", "4.4.2"); //設定app的路徑 capabilities.setCapability("app", app.getAbsolutePath()); //設定app的包名 capabilities.setCapability("appPackage", "com.example.android.contactmanager"); //設定app的啟動activity
capabilities.setCapability("appActivity", ".ContactManager"); //啟動driver driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @After public void tearDown() throws Exception { //測試完畢,關閉driver,不關閉將會導致會話還存在,下次啟動就會報錯 driver.quit(); } /** * 要執行的的測試方法 */ @Test public void addContact(){ //利用Xpath的方法尋找text值為Add Contact的控制元件 WebElement el = driver.findElement(By.xpath(".//*[@text='Add Contact']")); //點選這個控制元件 el.click(); //利用類名獲取介面上所有的EditText List<AndroidElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText"); //第一個EditText輸入內容Some Name textFieldsList.get(0).sendKeys("Some Name"); //第三個EditText輸入內容Some Name textFieldsList.get(2).sendKeys("[email protected]"); //在坐(100,500)滑動到(100,100) 時間為2毫秒 driver.swipe(100, 500, 100, 100, 2); //用xpath的方式尋找到text值為Save的控制元件,然後點選 driver.findElementByXPath(".//*[@text='Save']").click(); } }

二、Selenium 是什麼?

Selenium是一套完整的web自動化測試工具集,它包含了測試的錄製(Selenium IDE)、編寫及執行(Selenium Remote Control)和測試的並行處理(Selenium Grid)、WebDriver(selenium 2.0)等。Selenium的核心Selenium Core基於JsUnit,完全由JavaScript編寫,因此可運行於任何支援JavaScript的瀏覽器上。與WatiN相同,Selenium也是一款同樣使用Apache License 2.0協議釋出的開源框架

Selenium IDE 是firefox瀏覽器的一個外掛。提供簡單的指令碼錄製、編輯與回放功能。

Selenium Grid 是用來對測試腳步做分散式處理。現在已經整合到selenium server 中了。

RC和WebDriver 更多應該把它看成一套規範,在這套規範裡定義客戶端腳步與瀏覽器互動的協議。以及元素定位與操作的介面。

三、WebDriver 是什麼?

其實它就是一層基礎的協議規範。

假如說:Webdriver API(介面規範)說,我們要提供一個頁面元素id的定位方法。

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;//匯入java版的selenium(webdriver)

findElement(By.id("xx"));    //id定位方法

四、Webdriver 如何組織和執行用例?

把寫好這些操作頁面元素的方法(用例)組織起來執行並輸入測試結果,是由程式語言的單元測試框架去完成的。如java 的junit和testng單元測試框架(之後會說,替換Testng)。

五、並行與分散式的區別

如何並行的執行測試用例,並行要求“同時”執行多條用例,這個也是由程式語言的多執行緒技術實現的。

並行可以用Selenium Grid或者Testng來實現。

Selenium Grid 不是可以實現分散式執行麼?分散式的概念是寫好一條用例可以呼叫不同的平臺執行,如 A電腦上有一個測試用例,可以呼叫B電腦(linux)的Firefox瀏覽器來跑A電腦上的測試用例;也可以呼叫C電腦(windows)的Chrome瀏覽器來跑A電腦上的測試用例。這是分散式的概念。

六、Appium再度瞭解和介面

說了那麼多,其實Appium專業做MobileApp的自動化的,selenium只能操作ios和Android的預設瀏覽器。

從本質上來講,appium同樣繼承了WebDriver API的介面規範。Appium 同樣是支援多種程式語言, 然後Appium還包含了Selenium。

so Appium是非常強大的,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用於IOS和Android以及firefox的作業系統。原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似於ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用於網頁內容互動性的應用。
重要的是Appium是跨平臺的,何為跨平臺,意思就是可以針對不同的平臺用一套api來編寫測試用例。

Appium介面

1. Android Setting (Android設定)

Android相關的設定,為什麼要設定呢,因為這裡設定主要為了不用在腳本里面新增capabilities屬性和inspector檢測使用。
一些意思翻譯過來就明白了,也不多說了

這裡寫圖片描述

這裡寫圖片描述

2. General Setting (常規設定)

伺服器、日誌記錄 設定。這裡伺服器是本機,埠是4723,這是appium的埠,不是你模擬器的埠,不要搞混了,不用修改。

這裡寫圖片描述

這裡寫圖片描述

3. Developer Setting (開發者設定)

這裡寫圖片描述

這裡寫圖片描述

4.About (關於)

這沒什麼好說了,主要看當前版本

5. inspector (獲取id元素的工具)

放大鏡工具,獲取app介面控制元件屬性的工具,個人認為:截圖速度快,支援元素點選(MAC的比較屌,能記錄,滑動,搖一搖等等)。但沒有層次感,選中控制元件沒有提示框,屬性沒分割不好看。這裡推薦使用sdk自帶的Android Device Monitor,主要是看id和佈局。

這裡寫圖片描述

還是介紹一下他的使用方法:

  1. 啟動模擬器
  2. 配置Adnroid Setting(選擇安裝包和設定裝置名)
  3. 啟動Appium服務
  4. 啟動Inspector
    點選放大鏡開啟inspector,點選Refresh,沒安裝的話,就會安裝AnroidStting裡面設定的app

介面我都註釋了:

這裡寫圖片描述

6.Launch the appium node server開始停止

介面右上角的的三角按鈕

7. 日誌輸出

中間黑色背景,是顯示日誌的,這個日誌有用,除錯執行過程中都會輸出日誌,報錯都得靠他,輸出內容有:
info: Appium的除錯資訊
error 出現錯誤時候的錯誤資訊,這個很重要,解決出錯問題就看這裡了

8. clear this output log清除日誌

主介面的右下角的垃圾桶,就是清除日誌的,強迫症的點點點。

這裡寫圖片描述

ps: 有些內容來自網際網路

相關推薦

[Android測試] AS+Appium+Java+Win自動化測試: 基礎知識Appium介面

一、把上一章的demo先看懂 AndroidContactsTest.java public class AndroidContactsTest { //Driver private AppiumDriver<AndroidEle

Java設計模式:設計模式基礎知識原則

設計模式 概念 模式是在某種情景下(Context)下,針對某問題的設計的某種解決方案。 情景:是應用某個模式的情況。這應該是會不斷出現的情況。 問題:是你想在某情景下達到的目標,但也是某種情景下的約束 解決方案:是你所求的一個通用的設計,可用來

Java面試題】次握手四次揮手

本文內容大部分轉載自:http://blog.csdn.net/whuslei/article/details/6667471/ 原文獲得了54萬的閱讀量,說明改文章的質量很高 同時,博主在原文的基礎上也補充了一些內容 建立TCP需要三次握手才能建立,而斷開連線則需要

Appium+java+Android二(uiautomatorviewer定位手機頁面元素+用Java編寫自動化測試用例)

uiautomatorviewer定位手機頁面元素+編寫自動化測試用例 如何安裝及搭建appium的環境請參考我的上篇部落格appium+java+Android環境搭建 uiautomatorviewer工具是用來給手機頁面元素定位的,所以在使用uiautomatorviewer之前,

軟體測試系列Java Selenium3自動化測試

一.背景和目的        我大概是2015年開始接觸Selenium這個web自動化測試框架。當時是selenium2.48好像,從Selenium2.0開始,就加入了webdriver,實際上,我們說的selenium自動化測試,大部分情況都

基於appium的app自動化測試框架

基於appium框架的app自動化測試 App自動化測試主要難點在於環境的搭建,appium完全是基於selenium進行的擴充套件,所以app測試框架也是基於web測試框架開發的 一、裝置連線 (即構建基礎的測試環境,保證可以驅動裝置進行操作) 0.準備測試環境 1)安裝jdk配置java_home環

Appium移動端自動化測試-PageObject模式

1:PageObject Mode程式碼結構 2:程式碼的實現 2.1:封裝Server部分程式碼  用來啟動Appium 分配埠參考 :https://blog.csdn.net/hujyhfwfh2/article/details/83003680 2.2:封裝U

Appium移動端自動化測試-指令碼啟動Appium服務端

1:指令碼啟動Appium服務端的步驟 1.1:執行DOS命令的封裝方法 package com.AutoAPP.Utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt

Appium移動端自動化測試-常用API

1:針對元素的操作 1.1:獲取元素的屬性值 如下圖 我們可以獲取元素的屬性有Node Detail下的所有key對應的value屬性值 1.2:獲取元素座標 1:我們可以獲取的資料有 元素的起始座標 X Y值 ,和元素的高 寬 (注意 不能獲取元素的結束點座標) 1

Appium移動端自動化測試-常用API-滑動相關操作

1:APP的滑動的概念 如下圖 橫方向為 X軸 豎方向為Y軸 左上側的左邊為(0,0),右下側的最大左邊為螢幕的解析度(例如1080*1920 座標為(1080,1920));頁面左滑動 Y軸座標值不變 X軸座標值從大到小  頁面向上滑動 X軸座標值不變 Y軸座標值從小變大

Appium移動端自動化測試-元素定位基礎

1:如何去定位用什麼定位 1.1:用什麼定位工具 如下 安卓的定位工具是uiautomator 可以點選uiautomatorviewer.bat來啟動指令碼 1.2:定位工具如何使用 如下圖 是uiautomator開啟後的介面 我們以為登入按鈕來做定位的簡介 每次手機端有進

Appium移動端自動化測試-Capabilities引數的設定

1:搭建環境 1.1:基本環境的搭建 Appium環境的搭建:https://blog.csdn.net/hujyhfwfh2/article/details/82925424 參見error參考:https://blog.csdn.net/hujyhfwfh2/article/deta

Appium移動端自動化測試-常見error解決方法

1:Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"] 解決方法:https://blog.csdn.net/u012106209/article/de

Appium移動端自動化測試-aapt命令的使用

1:aapt命令的使用 aapt的位置如下: 1.1:查詢APP的包名和launchable activity aapt d badging C:\Users\Anndy\Desktop\11\zhihu.apk APP的包名可以

Appium&Python自動化測試-環境搭建安卓SDK

結果 gree index ase 環境變量配置 模擬器 https 變量 android 一、安裝包工具準備: jdk1.8.0(64 位) installer_r24.4.1-windows-androidSDK 二、JDK的安裝及配置 官方下載地址:htt

Mac&Appium&Python自動化測試-環境搭建安卓SDK

一、摘要 本博文將詳細講述在Mac環境下的jdk安裝、配置以及環境校驗;安卓sdk安裝、配置以及環境校驗 二、安裝包工具準備: jdk1.8.0(64 位) android-sdk_r24.4.1-mac osx.zip 三、JDK的安裝及配置 官方下載地址:https://www

Mac&Appium&Python自動化測試-Appium安裝

基礎配置 1.JAVA和Git就不用多說了 2.Brew,也就是homebrew,它是MacOSX上的軟體包管理工具,它就等同於linux上的apt-get、yum,如果沒有安裝,可以通過如下命令安裝它,安裝好它就可以通過它安裝途中其他幾個,只需要在命令列執行brew install xxx即可 rub

Windows&Appium&Python自動化測試-Appium安裝

一、安裝node.js 官方下載地址為:https://nodejs.org/en/download   傻瓜式安裝即可,安裝完成後,CMD中執行node -v檢視版本號 輸入npm 出現如上圖資訊,表示 node.js 安裝成功。npm 是一個 node 包管理和分發工具,有了

appium移動端自動化測試的一些感想

花了一個多月的時間來複習,學習appium+python+android的UI層的自動化測試。 從最開始的環境搭建,都後面執行指令碼報錯各類錯,到優化指令碼結構,基本上問題不斷。 相比,selenium做PC端的UI自動化測試來說,難度增加了一些。 這個月來的收穫總結一下: 1,養成了碰到問題自己查資

利用Appium實現App自動化測試

一、工具 Appium的核心其實是一個暴露了一系列REST API的service 這個service的功能是監聽一個埠(4723),然後接受由client傳送來的command,然後翻譯這些命令,再把這些命令轉換成移動裝置可以理解的形式傳送給移動裝置,移動裝置執行完這些命苦後把執行結果返回