[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和佈局。
還是介紹一下他的使用方法:
- 啟動模擬器
- 配置Adnroid Setting(選擇安裝包和設定裝置名)
- 啟動Appium服務
- 啟動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,然後翻譯這些命令,再把這些命令轉換成移動裝置可以理解的形式傳送給移動裝置,移動裝置執行完這些命苦後把執行結果返回