利用robotium實現微博的自動綁定
Android應用進行微博綁定主要有兩種方式,一種客戶端實現個webView,請求微博默認的授權頁,另一種則是直接調用微博客戶端,這裡實現的為前一種,即進和微博默認的授權頁,輸入用戶名密碼,然後登錄。
主要過程:點擊微博綁定按鈕“立即綁定”,客戶端進入授權頁,輸入用戶名及密碼,點擊“登錄”,微博綁定後按鈕狀態變為“解除綁定”,點擊可解除綁定。
主要問題:客戶端顯示的微博授權頁查看不到源碼,無法知道其網頁元素。
解決:使用SQLite編輯器查看客戶端應用的本地數據庫,一般webview的緩存數據存在於webviewCache.db數據庫下cache表中,導出其網址,在浏覽器中打開即可查看其源碼。
public void test01_Sina() throws Exception {
//進入微博綁定模塊
View textView=solo.getCurrentActivity().findViewById(R.id.?);
solo.clickOnView(textView);
solo.sleep(1000);
//獲得當前按鈕的顯示狀態,未綁定時顯示“立即綁定”,綁定後顯示“解除綁定”
TextView sinaTV=(TextView)solo.getCurrentActivity().findViewById(R.id.?);
String bindingSina=sinaTV.getText().toString();
String bindingNowSN=sinaTV.getResources().getString(R.string.?);
String unBindingSN=sinaTV.getResources().getString(R.string.?);
//判斷若還未綁定,則點擊“立即綁定”
if (bindingSina.equalsIgnoreCase(bindingNowSN)){
solo.clickOnView(sinaTV);
solo.sleep(25000);
solo.assertCurrentActivity("Expected ?Activity", "?Activity");
//在授權頁面輸入用戶名密碼
solo.enterTextInWebElement(By.name("userId"), "your username");
solo.enterTextInWebElement(By.name("passwd"), "your passwd");
solo.clickOnWebElement(By.className("btnP"));
solo.sleep(15000);
//斷言,若此時textView文本已變成“解除綁定”,則用例執行成功
assertEquals(true,sinaTV.getText().toString().equalsIgnoreCase(unBindingSN));
}
else{
View backImage=solo.getCurrentActivity().findViewById(R.id.?);
solo.clickOnView(backImage);
solo.assertCurrentActivity("Expected ?Activity", "?Activity");
}
}
對於采用同樣默認授權頁方式的騰訊微博、人人網亦可以用類似方法實現自動綁定與解除綁定。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11