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

1、把上一章的demo先看懂

AndroidContactsTest.Javajavascript

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("Some@example.com"); //在坐(100,500)滑動到(100,100) 時間爲2毫秒 driver.swipe(100, 500, 100, 100, 2); //用xpath的方式尋找到text值爲Save的控件,而後點擊 driver.findElementByXPath(".//*[@text='Save']").click(); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

2、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協議發佈的開源框架java

Selenium IDE 是firefox瀏覽器的一個插件。提供簡單的腳本錄製、編輯與回放功能。node

Selenium Grid 是用來對測試腳步作分佈式處理。如今已經集成到selenium server 中了。linux

RC和WebDriver 更多應該把它當作一套規範,在這套規範裏定義客戶端腳步與瀏覽器交互的協議。以及元素定位與操做的接口。android

3、WebDriver 是什麼?

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

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

import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver;//導入java版的selenium(webdriver) findElement(By.id("xx")); //id定位方法
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

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

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

5、並行與分佈式的區別

如何並行的執行測試用例,並行要求「同時」執行多條用例,這個也是由編程語言的多線程技術實現的。windows

並行能夠用Selenium Grid或者Testng來實現。api

Selenium Grid 不是能夠實現分佈式執行麼?分佈式的概念是寫好一條用例能夠調用不一樣的平臺執行,如 A電腦上有一個測試用例,能夠調用B電腦(Linux)的Firefox瀏覽器來跑A電腦上的測試用例;也能夠調用C電腦(windows)的Chrome瀏覽器來跑A電腦上的測試用例。這是分佈式的概念。

6、Appium再度瞭解和界面

說了那麼多,其實Appium專業作MobileApp的自動化的,selenium只能操做iOSAndroid的默認瀏覽器。

從本質上來說,appium一樣繼承了WebDriver API的接口規範。Appium 一樣是支持多種編程語言, 而後Appium還包含了Selenium。

so Appium是很是強大的,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用於iosandroid以及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: 有些內容來自互聯網

相關文章
相關標籤/搜索