PO模式自動化測試用例
PO設計模式是自動化測試中最佳的設計模式,主要體現在對界面交互細節的封裝,在實際測試中只關注業務流程就可以了。
相較於傳統的設計,在新增測試用例后PO模式有如下優點:
1、易讀性強
2、可擴展性好
3、可復用性強
4、可維護性好
封裝的代碼示例,來吧,展示:https://github.com/hanshoukai/appium_automation
測試框架封裝改造
一、appium源碼
appium server包括如下:
•Node.js 系列包
•adb shell
•ChromeDriver
二、Appium Android 自動化流程:
打印appium日志:appium -g <log file path>
日志內容先后為:
1、shell 命令
2、WebDriver 請求
3、ChromeDriver 日志
三、調試分析方法
Appium Log清晰記錄了所有的請求和結果以及底層的一些錯誤堆棧
分析界面數據:
1、使用 getPageSource 獲取界面的完整 DOM 結構
2、利用 XPath 獲取所有匹配的元素
腳本外調試:
1、借助於 curl 命令從腳本外探測界面數據
2、用瀏覽器實時查看UI布局
查看所有的sessions
查看其中一個session的界面元素
四、Appium 原理與 JSONWP 協議分析
WebDriver 協議與手工模擬
WebDriver 協議基礎知識:https://w3c.github.io/webdriver
session_id 獲取:
session_id=`curl http://127.0.0.1:4723/wd/hub/sessions | awk -F\" '{print $8}' `
element id 獲取:
curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/elements --data-binary '{"using":"xpath","value":"//*[@class=\"android.widget.Toast\"]"}' -H "Content-Type: application/json;charset=UTF-8"
element_id = 301c744b-57a0-4a9e-b8c1-5460d62be5fd(這一串為上curl命令打印出來的element的id)
元素屬性獲取:
curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text
元素動作:
curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/click
底層引擎如下:
•Uiautomator 安卓設備(https://github.com/appium/appium-uiautomator2-driver 及 https://github.com/appium/appium-uiautomator2-server)
•WDA 蘋果設備(https://github.com/appium/WebDriverAgent)
•selenium 瀏覽器
appium client:Python、Java等