移動端測試教程視訊學習筆記
3塊錢從馬雲家買了一大票視訊教程,涉及到Appium、介面測試、效能測試的視訊和文件一大堆。雖然視訊的年頭稍微老了點,但相信對於萌新來說還是有幫助的。
以下是看視訊的筆記,俗話說好記性不如爛筆頭,記下來以後找起來也容易。先從移動端的看起,這篇blog是記錄移動端相關的那些視訊的學習筆記。
移動端框架的一些知識點:
框架比較——
Appium:客戶端程式碼、Appium server、移動裝置要連成一條通路。一旦裝置斷開,執行就會失敗。自動重簽名
Robotium:把客戶端程式碼打成jar包,放在移動端執行。所以即使移動裝置和server的通路斷了,自動化指令碼仍然可以繼續執行。需手動重簽名
安卓小於4.2的版本自帶selendroid,大於4.2的版本自帶uiautomator,蘋果自帶uiautomation(視訊中提及,待查)
Appium跑指令碼前的準備工作——
需要先獲取包名和主activity(比如軟體可能開啟不是首頁,是一個歡迎頁面,這個時候就需要知道這個歡迎頁面activity是什麼,要先到達這個頁面才行)。獲取方式,有hierarchyviewer.bat(需要root或模擬器),用adb dumps(adb shell dumpsys activity | grep myFocusdActivicy(待查)),使用Appium exe版自動解析(選擇apk檔案,自動解析,但是要從activity下拉列表裡自己找到名字類似launcher這樣的那個activity)。
還需要檢視頁面元素屬性。使用sdk>>tools下面的uiautomatorview.bat。通過這個工具可以獲得頁面上的元素。(需要開啟開發者模式,一開始沒有開啟時報錯,Error taking device screenshot: EOF)
跑指令碼的時候刷截圖一定會報錯。所以如果要獲取元素,必須在沒有指令碼執行的時候才能獲取。
編寫指令碼時的工作——
首先要定義一個AppiumDriver,所有指令都是它發出的。
AppiumDriver driver;
然後是apk地址(如果已安裝,這一步就不需要),一個File型別物件
File app = new File("url");//已安裝的話不需要這行
接下來是一些配置,後面要作為引數傳入driver的
AppiumDriver是個抽象類。要用其他類來實現(以安卓為例)DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("app",app.getAbsolutePath());//已安裝的話不需要這行 capabilities.setCapability(CapabilityType.BROWSER_NAME,"");//逗號後面是引數,為空就行 capabilities.setCapability("deviceName","random");//引數寫什麼都行。但是這一項必須要寫 capabilities.setCapability("platformName","Android");//只有三個值可填,Android,iOS,FirefoxOS capabilities.setCapability("appPackage","com.tencent.mm");//Appium exe版一開始獲取到的那個包名 capabilities.setCapability("appActivity","ui.launcherUI");//Appium exe版一開始獲取到的那個主activity名 capabilities.setCapability("unicodeKeyboard","True");//有這行就可以支援輸入中文了。是Appium啟動後在手機上裝一個它自己的輸入法 capabilities.setCapability("resetKeyboard","True");//沒有這行的話,手機自己的輸入法調不出來,預設調Appium安裝的那個輸入法。所以要有這行 capabilities.setCapability("noSign","True");//有些app重簽名後無法使用。noSign設定成True意味著不會重簽名。如果首次執行指令碼時沒有設定此項,app已經被重簽名的話,只能重新下apk檔案帶上這行程式碼來用
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities)
登入driver.findElementByName("登入").click();///"登入"是通過UIAutomator Viewer獲取的,text
driver.findElementById("com.tencent.mm/ay5").sendKeys("186XXXXXXXX");//登入用手機號
driver.findElementById("com.tencent.mm/er").sendKeys("pwd");//密碼。在app端,id在一個頁面不一定是唯一的
連線跑完一次應該quit。可以放在finally語句中,保證每次跑完會執行quit。
一些adb命令:
解除安裝已安裝的app
adb uninstall com包名
安裝apk包
adb install apk路徑
獲取主acitivity名(待核實)
adb shell dumpsys activity | grep myFocusdActivicy
其他命令:
appium日誌輸出到檔案中
appium >Desktop\appium.log