做者:清菡
博客:oschina、雲+社區、知乎等各大平臺都有。html
App 自動化目前用得是 Appium,有 Python 版本的Uiautomator2
。這個是直接經過Uiautomator2
去作的,一個是利用中間的 Appium 去作。Appium 跨平臺跨語言。android
座標
、id
、xpath
、android_uiautomator
、classname
、accesiblity_id
。web
accesiblity_id
是安卓的元素定位方式之一。小程序
這個跟 Web 自動化有些通用的操做以外,它有一些額外的操做。例如:滑屏操做、觸屏操做、混合應用、toast 獲取。微信小程序
swipe:swipe 也是經過touchAction
來實現的。微信
觸屏操做:touchAction
框架
toast:toast 獲取對安卓版本、Appium 版本都是有要求。koa
用 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 自動化
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 自動化和 Web 自動化同樣,都是這樣分層的:
在 PO 模式中想要點擊元素、操做元素也得等待元素可見,也有最基本的 4 種元素操做方法:輸入操做、點擊操做、獲取它的文本內容、獲取它的屬性。
Locator 裏面綁定了元素定位方式和定位類型。Locator 來自 PageLocators 文件夾中。
手機屏幕就那麼大,App 要保證排版寬鬆,手指觸屏,要保證點擊一個功能不會碰到別的。
實際作自動化測試,Web 網頁是很複雜的,App 自動化測試的週期要比 Web 自動化時間要短不少。
寫框架先寫頁面,首先研究下頁面構造,看下頁面功能的關聯性。
公衆號 「清菡軟件測試」 首發,更多原創文章:清菡軟件測試 103+原創文章,歡迎關注、交流,禁止第三方擅自轉載。