uiautomator中如何判斷開關wifi開啟和關閉是否正確
阿新 • • 發佈:2019-02-13
在我們測試壓力中肯定有這麼些用例,就是讓你開啟xxx開關,判斷開關開啟成功,該如何去判斷呢!
我們就舉wifi開關為例,這裡不考慮wifi開啟後連線wifi然後能上網一系列動作我們暫不考慮,只開了開啟和關閉開關這個動作,開啟時是否開啟成功,關閉時是否關閉成功;
第一步,開啟開關這個動作我相信每個人都會,但是我們要思考如何並且判斷開啟開關成功,自動化開發就難倒在如何去判斷和定位問題,我們開啟開關肉眼可以看出就可以看,但是程式碼怎麼去判斷,程式碼實現肯定是:開啟-關閉-開啟-再關閉-再開啟····這樣的迴圈操作,也就是說,我第1次是開啟,那第2次是關閉,第3次是開啟,第4次是關閉····這規律就出來了,奇數是開啟的意思,偶數是關閉的意思;我們第1次(奇數)開啟開關的時候,使用uiautomator view工具檢視test內容顯示是否是關閉,反之,偶數是關閉時判斷test文字是否顯示是開啟。只要用奇偶數去判斷test文字內容,我們就可以進行判斷,
因為我是根據奇偶數去判斷狀態的方法,所以開始測試前要確保開關是保證關閉狀態的,要是為開啟狀態,記錄的結果肯定是錯誤,當然還有其他的辦法,我這種辦法屬於簡單粗暴,簡單易懂。僅供參考;
直接上程式碼:
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.Calendar; import android.R.string; import com.android.uiautomator.testrunner.UiAutomatorTestCase; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundException; import com.android.uiautomator.core.UiScrollable; import com.android.uiautomator.core.UiSelector; import dengshengyu.Util.FileUtil; /* * 專案名稱:PublicPressureScript * 類名稱:WifiOnAndOff * 類描述:連續開啟、關閉WiFi開關 * 建立人:鄧盛譽 * 建立時間:2017年8月15日 上午14:28 * 備註:wifi開關初始狀態要預設關閉,終端為開機狀態; * @版本v0.0.1 * * */ public class WifiOnAndOff extends UiAutomatorTestCase{ public void testWifi() throws Exception { int i=0; int count = 1 ; int count1 = 1 ; int count2 = 1 ; int count3 = 1 ; //home鍵返回主介面 getUiDevice().pressHome(); // 進入設定選單 Runtime.getRuntime().exec("am start com.android.settings"); sleep(3000); // 首次開關預設為關;迴圈點選開關50次 for(;i<50;i++){ // getUiDevice().click(574,306); UiObject clickOnAndOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget")); clickOnAndOff.click(); sleep(2000); //判斷開關是否正確; UiObject onOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget"));//開關控制元件 Runtime.getRuntime().exec("mkdir sdcard/dengshengyu"); // 在手機建立資料夾 Runtime.getRuntime().exec("mkdir sdcard/dengshengyu/wifi"); // 在手機建立資料夾 if(i%2==0){//偶數是為開 if(onOff.getText().equals("開啟")){//開啟成功 FileUtil.out("/sdcard/dengshengyu/wifi/Wifi開啟成功.txt", "開啟正確次數:"+count+";"); System.out.println("KaiQiChengGong"); count=count+1; } else if(onOff.getText().equals("關閉")){//開啟失敗! FileUtil.out("/sdcard/dengshengyu/wifi/Wifi開啟失敗.txt", "開啟失敗次數:"+count1+";"); System.out.println("KaiQiShiBai"); count1=count1+1; } }else //否則為奇數,也就是為關閉 if(onOff.getText().equals("關閉")){//關閉成功 FileUtil.out("/sdcard/dengshengyu/wifi/Wifi關閉成功.txt", "關閉正確次數:"+count2+";"); System.out.println("GuanBiChengGong"); count2=count2+1; } else if(onOff.getText().equals("開啟")){//關閉失敗 FileUtil.out("/sdcard/dengshengyu/wifi/Wifi關閉失敗.txt", "關閉失敗次數:"+count3+";"); System.out.println("GuanBiShiBai"); count3=count3+1; } }//for } }
這裡添加個附件知識:
UiObject clickOnAndOff = new UiObject(new UiSelector().resourceId("com.android.settings:id/switchWidget"));
這條控制元件名預設是第一個開關,從我手機截圖中大家可以知道我的wifi開關就在當前介面,而且resourceId就只有一個,大家有沒有想過,要是當前介面有很多開關,而且resourceId和className等名稱都一樣呢,大家怎麼獲取?請看我另篇文章有講解;---------------------------------完,不明白的給我留言·······················
文章作者:享有盛譽之名