前提:搭建好robotframework環境node
RF基於python2.7的版本實現的一套開源自動化測試框架python
推薦使用Appium Desktop,android
搭建Appium環境:app
1. 搭建JDK框架
2. 搭建SDK環境;SDK:software development kit 軟件包,經常使用的軟件是UIAutomatorViewer,進行移動端應用的元素定位python2.7
3. 鏈接的移動端設備,安卓真機或者模擬器(夜神)函數
PS:安裝完模擬器以後,將sdk中的adb.exe文件複製到夜神的安裝路徑下的nox_adb.exe,並重命名爲nox_adb.exe測試
4. 安裝Appium desktop,直接下載安裝便可。 若是安裝的是Appium server,須要配置node.js,Appium server路徑到環境系統變量中ui
5. 在RobotFrameWork中導入Appium的包,實現對移動端App的自動化測試spa
啓動conmand命令窗口,輸入pip install robotframework-appiumlibrary
6. 啓動RobotFrameWork,導入AppiumLibrary,導包時,包名大小寫敏感
導入AppiumLibrary後,可能會報錯,提示six not found的error,啓動conmand窗口,輸入 pip install six,而後重啓RobotFrameWork
RobotFrameWork的工程結構:
新建Project,選擇type爲directory——新建Suite,選擇type爲file——在Suite中導入library——新建Case
RF自己是一個關鍵字驅動的方式來實現自動化的。
騰訊QQ的登陸demo:
1.RF鏈接模擬器,啓動騰訊QQ
Open Application參數解析:
1.Appium服務端,鏈接固定
2.配置Appium的Capabilities:
deviceName 設備名稱 能夠經過conmand窗口輸入 adb devices獲取到
platformName 操做系統 Android
platformVersion 系統版本 4.4.2
appPackage 被測包名
com.lixin.yezonghui
appActivity 被測應用的主入口
.splash.SplashActivity
2. 進入QQ登陸界面
要獲取元素的定位,而後基於已定位的元素進行相對於的操做。
文件1地址:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/lib/android-helpers.js
註釋掉:await helpers.pushSettingsApp(adb);
註釋掉:await helpers.pushUnlock(adb);
文件2地址:
/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/build/lib/android-helpers.js
註釋掉:return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
新增:return context$1$0.abrupt('return', defaultIME);
註釋掉:return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));
新增:return context$1$0.abrupt('return', defaultIME);
重啓appium
Appium Setting和Unlock在測試過程當中不要輕易去掉。
雖然AppiumSetting不知道作什麼用的,可是Unlock在手機鎖屏的狀況下會有解鎖的效果。若是沒有Unlock,鎖屏狀態下client會啓動失敗,而有Unlock時會自動解鎖,而後執行下一步
若是有誰知道Appium Setting是作什麼的,但願你們給科普一下~
關鍵字 |
含義 |
實例 |
備註 |
Click button |
點擊按鈕 |
Click button 登陸 |
這裏的登陸是class屬性,必須是button |
Click element |
點擊元素 |
Click element [locator] |
Locator能夠是resource-id,也能夠是xpath,但必須是當前頁面惟一存在的,通常用該關鍵字能夠完成全部元素點擊 |
Click text |
點擊文字 |
Click text 個人 |
個人須要是當前頁面惟一存在的 |
Input text |
在指定元素中輸入文本 |
Input text [locator] 111 |
Locator能夠是resource-id,也能夠是xpath |
Swipe |
滑動屏幕 |
Swipe 1000 1800 100 1800
|
|
Get Text |
獲取某標籤內容 |
${account} Get Text [locator] |
獲取內容後存儲到指定變量中,從而在後續腳本中調用該內容 |
2、校驗函數
關鍵字 |
含義 |
實例 |
備註 |
Element Name Should Be |
檢查元素的name屬性 |
Element Name Should Be [locator] 登陸 |
locator能夠是resource-id,也能夠是xpath |
Element Should Be Enabled |
檢查元素是否可用/可見 |
Element Should Be Enabled [locator] |
|
Page Should Contain Element |
檢查界面包含某些元素 |
Page Should Contain Element [locator] |
|
Page Should Contain Text |
檢查界面包含某些文字信息 |
Page Should Contain Text 預定掛號 |
|
Page Should Not Contain Element |
檢查界面不包含某些元素 |
Page Should Not Contain Element [locator] |
|
Page Should Not Contain Text |
檢查界面不包含某些文字信息 |
Page Should Not Contain Text 預定掛號 |
|
3、等待函數
關鍵字 |
含義 |
實例 |
備註 |
Wait Until Page Contains |
等待直到界面中包含某些文字,才進行下一步 |
Wait Until Page Contains 預定掛號 |
默認等待時間爲5s |
Wait Until Page Contains Element |
等待直到界面中包含某些元素,才進行下一步 |
Wait Until Page Contains Element [locator] |
locator能夠是resource-id,也能夠是xpath |
Wait Until Page Does Not Contain |
等待直到界面中不包含某些文字,才進行下一步 |
Wait Until Page Does Not Contain 預定掛號 |
|
Wait Until Page Does Not Contain Element |
等待直到界面中不包含某些元素,才進行下一步 |
Wait Until Page Does Not Contain Element [locator] |