前言:目前很多公司都在做APP,對於APP測試來說,我個人認爲痛點在於版本迭代快,機型多,迴歸測試需要耗費大量的人力、時間成本,那我們該怎麼做呢?這時候就要引入APP自動化了,它可以幫助我們有效的進行迴歸測試!
一、Appium環境安裝和架構介紹
二、appium用例錄製
官方文檔
在電腦上通過 adb 和 IP 地址連接 Android 設備
adb connect 127.0.0.1:7555
adb logcat |grep -i displayed 獲取當前的操作日誌
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
desire_cap = {
"platformName": "android",
"deviceName": "127.0.0.1:7555",
"appPackage": "com.xueqiu.android",
"appActivity": ".view.WelcomeActivityAlias",
"noReset": True, # 跳過彈窗,手動關閉彈窗後後續操作將自動跳過
"dontStopAppOnReset": True # 設置爲不停止APP
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_cap)
driver.implicitly_wait(10)
element1 = driver.find_element_by_id("com.xueqiu.android:id/tv_search").click()
element2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text").send_keys("Alibaba")
time.sleep(5)
windows_rect = driver.get_window_rect()
width = windows_rect["width"]
height = windows_rect["height"]
print(width, height)
TouchAction(driver).tap(x=175, y=220).perform()
time.sleep(5)
TouchAction(driver).tap(x=270, y=692).perform()
time.sleep(5)
driver.back()
time.sleep(5)
TouchAction(driver).tap(x=325, y=1223).perform()
time.sleep(5)
driver.back()
time.sleep(5)
TouchAction(driver).tap(x=206, y=197).perform()
time.sleep(5)
TouchAction(driver).tap(x=247, y=1243).perform()
time.sleep(5)
element3 = driver.find_element_by_id("com.xueqiu.android:id/tv_login_by_phone_or_others")
element3.is_enabled()
print(element3.text)
print(element3.size)
每一個操作步驟添加等待時間是爲了讓大家看的更加清楚操作步驟哈
三、元素定位方法與隱式等待
driver.implicitly_wait(10) 隱式等待,作用於全局
四、App控件定位
控件基礎知識
五、APP控件交互
六、觸屏操作自動化
七、高級定位技巧
八、顯式等待機制
locator = (MobileBy.ID, "com.xueqiu.android:id/tv_login_by_phone_or_others")
WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable(locator)) #顯式等待判斷
element = WebDriverWait(driver, 10).until(lambda x: x.find_element(*locator)) #顯示等待用lambda表達式判斷
九、特殊控件Toast識別
十、屬性獲取與斷言
pip install pyhamcrest pip安裝
十一、appium參數化用例
直接用pytest.mark.parmetrize裝飾器或者yaml文件讀取
十二、數據驅動
利用外部數據
使用yaml
十三、Android Webview測試
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md
https://npm.taobao.org/mirrors/chromedriver/
adb shell pm list package 查看手機上所有的包名
adb shell pm list package|grep browser 查看瀏覽器的包名
adb shell pm dump com.android.browser|grep version 查看瀏覽器版本
chrome://inspect/#devices 調試H5工具,需要翻牆才能訪問
點擊inspect
driver.switch_to.context(driver.switch_to.context[-1])
driver.switch_to.window(driver.window_handles[-1])
對於混合APP來說,有一個上下文概念,從原生進入WEB需要切換上下文,就像pc切換句柄一樣,這是一個簡單的切換,詳細情況可以百度
十四、微信小程序測試
待更新
十五、實戰演練
Android 開發環境與SDK
Appium Server 包括兩種形態:
Appium Desktop :包括Appium Server ,Appium Inspector
Appium Server :直接就是一個server ,命令行啓動 直接輸入appium 回車
測試iOS 系統:必須的環境
PC: MacOS,Xcode ,libimobiledevice ,ideviceinstaller,
手機安裝:WDA facebook (webdriver agent)
測試設備
真機
模擬器
mumu 6.0 (推薦)
Genimotion
- 可以模擬不同手機尺寸,不同版本的手機設備
emulator
- android sdk自帶的emulator ,使用Android Studio 創建
- emulator 啓動方法:
emulator -list-avds 列出有哪些模擬器
emulator @Pixel_3a_XL_API_23_x86-6-0 啓動模擬器
測試設備需要設置:
真機或者模擬器都需要打開的:
打開開發者選項, 連點版本號七下,返回 設置頁
開發者選項 - USB調試模式
模擬器連接:
adb connect
真機 需要安裝驅動:
windows系統: 安裝驅動 ,豌豆夾或者手機助手。
Mac Linux 不需要安裝
App 文件
下載安裝
三種方式:
去應用商店或者app store下載安裝
去網上下載(比如應用寶等平臺),然後拖拽到手機上
將下載下來的應用,使用命令安裝:
adb install **.apk
卸載
卸載方式:
直接在模擬器上卸載,長按應用,拖拽刪除
使用命令卸載:
adb uninstall apk的包名
例如企業微信:
adb uninstall com.tencent.wework
Appium Desktop
點擊 Start Server 啓動服務
配置DesireCapability
{
"platformName": "android",
"deviceName": "emulator-5554",
"appPackage": "com.tencent.wework",
"appActivity": ".launch.LaunchSplashActivity",
"autoGrantPermissions": "true", #這個參數爲true的時候 noReset參數不生效
"noReset": "true" #noReset 防止清除app的數據
}
adb 常用命令
adb devices
adb logcat | grep -i Displayed
adb shell am start -n 啓動 activity
com.tencent.wework/.launch.LaunchSplashActivity
com.tencent.wework/.launch.WwMainActivity
注意:啓動頁與直接啓動主頁是不同的。 理論上任何一個頁面都可以直接進去,但開發做了限制,不允許這麼操作。只能從啓動頁開始,模擬真實用戶使用場景。
待更新…