Selenium之Android使用學習

20140507html

Selenium通常用在web自動化上,爲何Android上也能用呢?java

如圖,手機端和DB聯動:手機端的客戶端給server發數據流,進行增刪改查操做,這種寫數據用update更新,更新後計數器+1,表示手機端對server進行了一次訪問,有了一筆交易;mysql

db(如mysql)會同步到網頁上給你們看,給網頁發個消息,說已經有一筆交易,linux

網頁顯示完畢後,要反饋給db一個消息,告訴用戶看到了。git

db所在的server會經過httpsocket 鏈接,告訴手機客戶端,同步顯示網頁的東西。web

就是說,手機客戶端只是佔到其中的三分之一左右,後臺的鍵值對校驗,網頁同步顯示等都要關注。面試

 

左邊是Native Driver,右邊是selenium。sql

Native Driver是google作的簡化版selenium,該工具是webdriver API的一種實現,使用原生UI而不是瀏覽器UI的自動化測試框架,用於運行Android應用程序的功能測試。Google決定重用WebDriver API 用於原生應用而不是建立全新的接口,是應爲二者之間有許多類似點--他們都控制相同的UI操做,如點擊、輸入、讀取文本、切換窗口。並且熟悉WebDriver的用戶不須要學習另外一種API就能夠當即開始使用NativeDriver。它是運行在Android裏面的,併入了framework框架。shell

若是要使用Nativedriver,在編譯版本的時候,好比小米,編譯時要把框架加進去,最後生成兩個jar包,把這兩個jar包加入到project中,就能夠引用NativeDriver進行自動化測試了。拿到一個手機若是沒把Native包給你,就作不了自動化測試了。json

上面那個圖,Native Driver有兩個東西,黃色部分,一個是server,一個是client,看左邊的圖,APK裝入手機後,經過framework層(具體是Instrumentation framework)與底層進行通訊(這不就是佳林老師講的架構嘛),server會啓動一個端口叫4444,與APK進行通訊,那麼端口服務會把framework的view視圖所有讀出來,讀出來以後判斷是哪一個控件,是button呢,仍是文本框呢?selenium有三種方法去找控件:1. path 2. id 3. classname。再看右邊的client端,這是要部署在本身的自動化腳本里。

QTP比selenium強大太多了,各類瀏覽器都支持,能夠截屏對比,斷言,都是自動的,可是對於人而言,沒有意義。selenium是開源的自動化框架,走到哪裏均可以用;且太貴。

Selenium有四個版本,RC是最先的,如今名字叫WebDriver了,腳本優美簡潔。

LR 評估性能,大企業纔會用到。

Selenium是ThroughtWorks公司一個強大的開源web功能測試工具系列,本系列如今主要包括如下四款:

1. Selenium Core:支持DHTML(動態超文本)的測試案例(效果相似數據驅動測試),它是Selenium IDE和Selenium RC的引擎。優勢是寫測試案例簡單,支持大多數瀏覽器,缺點是須要遠程安裝,Selenium語言也限制了複雜案例的可能性,而且沒有良好的外部擴展,這都會是致命的問題。由於一款測試工具不可能100%知足你測試須要的,當它不能知足你的測試需求時候,它必須有一個擴展機制可讓你使用其餘的方式知足你需求,不然這款測試軟件即便功能再強大,也請三思神勇,不然當投入大量資源後,才發現某些問題不能解決,那時候已經晚了,這是金老師的切身體會。

2. Selenium IDE:是火狐的插件,只支持火狐。下載下來後直接拖到火狐中,就有錄製器了,很傻瓜地操做。

3. Selenium Server(過去叫Selenium RC Server):是主要的。

4. Selenium Grid:

IDE和HTA不重點講,由於如今360瀏覽器是主流了。中間兩個重點講。

代碼分析workflow:

面試常常問的:flick icon格式

服務器端口 

對比robotium(獲取view視圖 找到控件 再調用touch)

select 三種方式查找webview 第一種是path 第二種是 className方法 第三種是id

Selenium的api:http://selenium.googcode.com/git/docs/api/java/index.html

 

 

1. 下載TortoiseSVN(小烏龜,好處是想下載到哪裏,就在當地打開,下載,OK),這裏的下載地址是:http://selenium/googlecode.com/svn/trunk

2. 下載完畢後有四個文件:thrid-party;selenium-common;server--selenium( 找不見,不知道爲何)

3. 重要的類:位於server--selenium中的DriverServlet服務器核心類

 位置:server--selenium/src/org/openqa/selenium/remote/server/DriverServlet.java

public class DriverServlet extends HttpServlet{

protected void service xxxx --service端口是4444,面試時常常問到

app端口 5037?

}

Dumpsys meminfo 要到linux adb shell裏查看內存,或者用top查看

total 總內存 RSS 物理內存 Stack 堆棧內存 dalvik 虛擬機內存

top命令後,出現的有RSS--物理內存;

Flick類-滑動-核心是基於控件

Flick.java: 邏輯

1. 拿到WebElement,而後獲得其座標;拿到後去Flick(滑動),從左滑到右,偏移多少多少

if (elementID !=null){

WebElement element = getKnowElements().get(elementId);

Coordinates elementLocation = ((Locatable) element).getCoordinate

touchSreen.flick(elementLocation,xoffset,yoffset,speed);

}else {

touchSreen.flick(xSpeed,ySpeed);

return ResultType.SUCCESS;

安卓裏經常使用格式:

json的格式[{"name":"ianthe",},]鍵值對

SAX 邊加載邊讀入之前內存小經常使用

 

此處回憶一下robtium:先是getview-把它丟到ArrayList裏面,再來判斷是哪個控件,接下來就是getxxx(x,y,xxx)

相關文章
相關標籤/搜索