一、把上一章的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");
//創(chuàng)建Capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
//設置要調試的模擬器的名字
capabilities.setCapability("deviceName","minote");
//設置模擬器的系統(tǒng)版本
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();
}
/**
* 要執(zhí)行的的測試方法
*/
@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
二、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協(xié)議發(fā)布的開源框架
Selenium IDE 是firefox瀏覽器的一個插件。提供簡單的腳本錄制、編輯與回放功能。
Selenium Grid 是用來對測試腳步做分布式處理。現(xiàn)在已經(jīng)集成到selenium server 中了。
RC和WebDriver 更多應該把它看成一套規(guī)范,在這套規(guī)范里定義客戶端腳步與瀏覽器交互的協(xié)議。以及元素定位與操作的接口。
三、WebDriver 是什么?
其實它就是一層基礎的協(xié)議規(guī)范。
假如說:Webdriver API(接口規(guī)范)說,我們要提供一個頁面元素id的定位方法。
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
四、Webdriver 如何組織和執(zhí)行用例?
把寫好這些操作頁面元素的方法(用例)組織起來執(zhí)行并輸入測試結果,是由編程語言的單元測試框架去完成的。如java 的junit和testng單元測試框架(之后會說,替換Testng)。
五、并行與分布式的區(qū)別
如何并行的執(zhí)行測試用例,并行要求“同時”執(zhí)行多條用例,這個也是由編程語言的多線程技術實現(xiàn)的。
并行可以用Selenium Grid或者Testng來實現(xiàn)。
Selenium Grid 不是可以實現(xiàn)分布式執(zhí)行么?分布式的概念是寫好一條用例可以調用不同的平臺執(zhí)行,如 A電腦上有一個測試用例,可以調用B電腦(Linux)的Firefox瀏覽器來跑A電腦上的測試用例;也可以調用C電腦(windows)的Chrome瀏覽器來跑A電腦上的測試用例。這是分布式的概念。
六、Appium再度了解和界面
說了那么多,其實Appium專業(yè)做MobileApp的自動化的,selenium只能操作iOS和Android的默認瀏覽器。
從本質上來講,appium同樣繼承了WebDriver API的接口規(guī)范。Appium 同樣是支持多種編程語言, 然后Appium還包含了Selenium。
so Appium是非常強大的,可用于測試原生應用,移動網(wǎng)頁應用和混合型應用,且是跨平臺的。可用于ios和android以及firefox的操作系統(tǒng)。原生的應用是指用android或ios的sdk編寫的應用,移動網(wǎng)頁應用是指網(wǎng)頁應用,類似于ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用于網(wǎng)頁內容交互性的應用。
重要的是Appium是跨平臺的,何為跨平臺,意思就是可以針對不同的平臺用一套api來編寫測試用例。
Appium界面
1. Android Setting (Android設置)
Android相關的設置,為什么要設置呢,因為這里設置主要為了不用在腳本里面添加capabilities屬性和inspector檢測使用。
一些意思翻譯過來就明白了,也不多說了
2. General Setting (常規(guī)設置)
服務器、日志記錄 設置。這里服務器是本機,端口是4723,這是appium的端口,不是你模擬器的端口,不要搞混了,不用修改。
3. Developer Setting (開發(fā)者設置)
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 出現(xiàn)錯誤時候的錯誤信息,這個很重要,解決出錯問題就看這里了
8. clear this output log清除日志
主界面的右下角的垃圾桶,就是清除日志的,強迫癥的點點點。
ps: 有些內容來自互聯(lián)網(wǎng)
浙公網(wǎng)安備 33010602011771號