安卓真機運行自動化測試(selenium 2)


一、環境+設備:

開發環境:Eclipsejdk1.6

機型:GT-S5830android 2.3.4


二、過程

   基於上次在模擬器上運行了junit單元測試打開google頁面後,再次試驗下了使用真正的手機來運行。此次在測試過程先後測試www.baidu.comm.baidu.com 均不能真正找到元素的位置,以失敗告終,查其原因發現手機上的頁面idpc上的頁面id是不一樣,遂放棄測試別人的網頁。轉向公司內部的樂園測試環境。通過慢慢摸索,也終於發現了一些祕密。

三、搭建

之前通過模擬器時候,比較好理解,因爲在同一臺機器,只要轉發了端口就可以通信。當真正連接上外接設備時候,一下有點傻眼,這PC與手機的橋樑是什麼呢,怎麼通信呢?

於是查找資料,在網上查找到一個DDMSDalvik Debug Monitor Service
)的Eclipse插件,解釋是:Android 開發環境中的Dalvik虛擬機調試監控服務
,也是開發android的插件,Eclipseandroid的橋樑,於是我又開始裝這個,折騰了好久,最終裝上去時候,發現連接是連接上了設備,可對於如何做端口轉發等還不知道怎麼弄(或許是現在沒弄明白)。其實這個插件裝好後對編寫腳本時候作爲調試用途是很好的。

再查找資料,原來ADB(Android Debug Bridge)可以直接對設備進行操作。即大約可以簡化步驟爲:


1、裝好手機在PC端的驅動(可用豌豆莢)

2、下載adb(地址:http://115.com/file/clwr1fqnÂ

3、命令行模式進入adb目錄,運行adb,可使用adb 回車直接看幫助

4、命令:adb foward tcp:8080 tcp:8080PC端的8080端口所有通信數據轉發到設備的8080端口。


以上準備就緒,接下來便是測試單元的編寫。


四、webdriver+junit

編寫測試單元OneTest(),部分代碼如下:

WebDriver driver = new AndroidDriver();
driver.get("http://xxx/?r=sso/login");
driver.findElement(By.id("login_uid")).sendKeys("aaaaaaaa");
driver.findElement(By.id("login_password")).sendKeys("123456"); 
driver.findElement(By.name("loginSigin")).click();
driver.wait();
assertTrue(driver.getTitle().contains("xxxxxx")); //驗證title
driver.quit();

(涉及一些網址不方便公開)

點擊運行,可以在手機上看到手機開始自動運行這段代碼的步驟了。具體圖示不便展出,請見諒

六、apk支持的平臺

[只有一個2.3.x(薑餅),蜂窩(3.x版),冰淇淋三明治(4.0.X)及以上版本

注意,在模擬器上2.3.X有可能會導致webdriver崩潰。


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章