App 自動化《元素定位方式、元素操作、混合應用、分層設計、程式碼方式執行 Pytest 命令》
堅持原創輸出,點選藍字關注我吧
作者:清菡
部落格:oschina、雲+社群、知乎等各大平臺都有。
目錄
- 一、App 元素定位方式
- 二、元素操作
- 三、測試混合應用
- 四、以程式碼的方式執行 Pytest 命令
- 五、App 自動化分層設計
App 自動化目前用得是 Appium,有 Python 版本的Uiautomator2
。這個是直接通過Uiautomator2
去做的,一個是利用中間的 Appium 去做。Appium 跨平臺跨語言。
一、App 元素定位方式
座標
、id
、xpath
、android_uiautomator
、classname
、accesiblity_id
。
accesiblity_id
是安卓的元素定位方式之一。
二、元素操作
這個跟 Web 自動化有些通用的操作之外,它有一些額外的操作。例如:滑屏操作、觸屏操作、混合應用、toast 獲取。
swipe:swipe 也是通過touchAction
來實現的。
觸屏操作:touchAction
toast:toast 獲取對安卓版本、Appium 版本都是有要求。
用 uiautomatorview 是捕捉不到的,通過 xpath 來獲取 toast 資訊。
xpath表示式 文字匹配
loc ='//*[contains(@text,"{}")]'.format("手機號碼或密碼")
contains
通過 xpath 表示式裡面的contains
函式@text
,text
在安卓當中,它是個屬性。
xpath 定位表示式,拿到它之後,經常用的是presence
。
# 等待的時候,要用元素存在的條件。不能用元素可見的條件。
try:
WebDriverWait(driver,10,0.01).until(EC.presence_of_elements_located((MobileBy.XPATH,loc)))
# 上限10秒就夠了,確認toast在頁面上存在的時候大概是多久,它都沒有0.5秒,你去間隔0.5,可能消失了,你還只留在這。
print(driver.find_element_by_xpath(loc).text)
except:
print("沒有找到匹配的toast!!!!")
做 Web 自動化或者其它的時候,都是等待元素可見。在 toast 資訊獲取的時候,是等待元素存在,然後獲取它的文字內容。
這個地方有個概率的問題:用它去獲取 toast,時間越短,概率越高。可能面臨 1%-10%的失敗率。當然不同的產品是不一樣的。
三、測試混合應用
原生控制元件關於 html 頁面的元素標識是什麼?
Web 自動化中一個頁面中嵌入了另外一個頁面,用的是iframe
。webview 代表網頁檢視。
如果從原生控制元件中切換到網頁檢視當中,切換的名字叫做context
,切換的前提是獲取到它。
獲取到 webview 對應的context
,然後在這裡面去操作。
從原生控制元件切換到 html 頁面,通過context
切換之後,應該在 html 頁面中做元素定位。
Uiautomatorview 沒辦法找到 html 頁面,所以用 Uc-devtools。
找到元素之後,後續就是 Web 自動化操作了,要看到 Webview 頁面的時候,必須要開啟 debug 模式,否則你是看不到的。
網上有些操作可以強制的開啟它,不過操作流程比較複雜,會破壞一些東西。
混合應用是 App 和 Web 自動化的結合。微信小程式其實就是 Web 自動化,只不過嵌在微信裡面。
微信本身是個 App,在微信裡操作,切換到小程式裡面,在小程式裡做想做的 Web 自動化測試。
原生控制元件+html 頁面:混合應用-webview\切換 context\uc-devtools\web 自動化
四、以程式碼的方式執行 Pytest 命令
import pytest
if __name__ == '__main__':
pytest.main()
這是以 Python 程式碼的方式來執行 Pytest 命令,來看看main
函式的原始碼:
之前在 cmd 中輸入pytest -m
過濾下標籤,比如 smoke 標籤pytest -m smoke
,或者指定 html 報告pytest -m smoke -
都是在這裡寫的。
pytest -m smoke
這樣的命令,在程式碼裡寫就好了。
它這裡,第一個引數就是寫的命令,但是它是個列表,用列表的方式存起來就好了。
import pytest
if __name__ == '__main__':
pytest.main(["-m","smoke"])
在命令列中用空格隔開的,在這裡一樣一樣放在列表當中來。程式碼中的執行效果跟在 cmd 中執行的效果是一模一樣的。
五、App 自動化分層設計
App 自動化和 Web 自動化一樣,都是這樣分層的:
在 PO 模式中想要點選元素、操作元素也得等待元素可見,也有最基本的 4 種元素操作方法:輸入操作、點選操作、獲取它的文字內容、獲取它的屬性。
Locator 裡面繫結了元素定位方式和定位型別。Locator 來自 PageLocators 資料夾中。
手機螢幕就那麼大,App 要保證排版寬鬆,手指觸屏,要保證點選一個功能不會碰到別的。
實際做自動化測試,Web 網頁是很複雜的,App 自動化測試的週期要比 Web 自動化時間要短很多。
寫框架先寫頁面,首先研究下頁面構造,看下頁面功能的關聯性。
公眾號 「清菡軟體測試」 首發,更多原創文章:清菡軟體測試 103+原創文章,歡迎關注、交流,禁止第三方擅自轉載。
相關文章
- App自動化《元素定位方式、元素操作、混合應用、分層設計、程式碼方式執行Pytest 命令》APP
- APPIUM-Android自動化元素定位方式APPAndroid
- [python][selenium][web自動化]webdriver的元素定位方式PythonWeb
- Appium自動化(10) - appium高階元素定位方式之 UI Automator API 的詳解APPUIAPI
- 如何選擇元素定位方式
- selenium常用元素定位方式
- Web自動化必會知識:「Web基礎、元素定位、元素操作、Selenium執行原理、專案實戰+框架」Web框架
- Appium自動化(9) - appium元素定位的快速入門APP
- UI 自動化元素定位規範問題UI
- appium元素定位APP
- jQuery元素動畫方式滑動效果jQuery動畫
- Appium常用操作之「元素定位、swipe 滑屏操作」APP
- Selenium4自動化測試4--元素定位By.XPATH,元素定位最佳順序
- jquery實現的點選頁面動畫方式平滑定位到某元素程式碼jQuery動畫
- 3種方式自動化控制APPAPP
- IOS 自動化,幾種特殊情況下 UI 元素獲取的方式iOSUI
- jQuery動畫方式設定div元素長和寬程式碼例項jQuery動畫
- 自動駕駛定位已知方式自動駕駛
- Playwright自動化測試工具之元素定位實戰
- Selenium3自動化測試【17】元素定位之Link定位
- UI自動化在RobotFramework中採用的分層設計UIFramework
- CSS應用給網頁元素的幾種方式總結CSS網頁
- js style方式設定元素的樣式JS
- 獲取或操作DOM元素特性的幾種方式
- Selenium3自動化測試【20】CSS定位元素CSS
- 隱藏元素兩種方式
- HTML應用CSS程式碼方式HTMLCSS
- 程式碼分層設計
- Shannon Appelcline:舉例論遊戲數學元素的3種設計方式APP遊戲
- 騰訊出品小程式自動化測試框架【Minium】系列(三)元素定位詳解框架
- 元素定位
- Shortery,為 macOS 捷徑增加自動化執行的新方式Mac
- javascript使用style方式設定元素的樣式JavaScript
- jQuery動畫方式設定元素的透明度jQuery動畫
- 以動畫方式設定元素的透明度動畫
- Selenium3自動化測試【18】XPath定位元素(2)
- 指令碼執行方式指令碼
- html元素滾動定位方法HTML