Selenium之Android使用學習

來源:互聯網
上載者:User

標籤:android   style   blog   class   code   java   

20140507

Selenium一般用在web自動化上,為什麼Android上也能用呢?

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

db(如mysql)會同步到網頁上給大家看,給網頁發個訊息,說已經有一筆交易,

網頁顯示完畢後,要反饋給db一個訊息,告訴使用者看到了。

db所在的server會通過httpsocket 串連,告訴手機用戶端,同步顯示網頁的東西。

就是說,手機用戶端只是佔到其中的三分之一左右,背景索引值對校正,網頁同步顯示等都要關注。

 

左邊是Native Driver,右邊是selenium。

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

如果要使用Nativedriver,在編譯版本的時候,比如小米,編譯時間要把架構加進去,最後產生兩個jar包,把這兩個jar包加入到project中,就可以引用NativeDriver進行自動化測試了。拿到一個手機如果沒把Native包給你,就做不了自動化測試了。

上面那個圖,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:是Firefox的外掛程式,只支援Firefox。下載下來後直接拖到Firefox中,就有錄製器了,很傻瓜地操作。

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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.