Appium自動(dòng)化測(cè)試實(shí)現(xiàn)H5頁(yè)面元素定位
簡(jiǎn)介
在現(xiàn)在的移動(dòng)端App中,由于開發(fā)效率、需求頻繁變更的需求情況下,經(jīng)常有相關(guān)的運(yùn)營(yíng)需求,經(jīng)常要進(jìn)行更新,如果全部采用原生開發(fā),需要的成本比較高,后來(lái)就出現(xiàn)了內(nèi)嵌的H5頁(yè)面。那么這些H5頁(yè)面元素該如何進(jìn)行定位操作呢?
針對(duì)這種H5場(chǎng)景直接使用前面所講的方法來(lái)進(jìn)行定位是不行,因?yàn)榍懊娴亩际腔贏ndriod原生控件進(jìn)行元素定位,而Web網(wǎng)頁(yè)是單獨(dú)的B/S架構(gòu),兩者的運(yùn)行環(huán)境不同因此需要進(jìn)行上下文(context)切換,然后對(duì)H5頁(yè)面元素進(jìn)行定位操作。
上下文:在程序中context我們可以理解為當(dāng)前對(duì)象在程序中所處的一個(gè)環(huán)境。 比如前面提到的App一個(gè)界面是屬于Activity類型,也就是Android界面環(huán)境,但是當(dāng)訪問內(nèi)嵌的網(wǎng)頁(yè)是屬于另外一個(gè)環(huán)境(網(wǎng)頁(yè)環(huán)境),兩者處于不同的一個(gè)環(huán)境。
H5元素定位準(zhǔn)備工作
Webview 調(diào)試模式是否開啟檢查
在自動(dòng)化腳本中,進(jìn)入到對(duì)應(yīng)的H5頁(yè)面,打印輸出當(dāng)前context,如果一直顯示為Natvie App,則webview未開啟
打開app對(duì)應(yīng)的h5頁(yè)面,在 chrome://inspect/#devices 地址中,檢查是否顯示對(duì)應(yīng)的webview,如沒有,則當(dāng)前未開啟調(diào)試模式
開啟方式:
在WebView類中調(diào)用靜態(tài)方法setWebContentsDebuggingEnabled,這種需要App開發(fā)人員操作。
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
拿到H5頁(yè)面地址和chrom版本信息
本次測(cè)試應(yīng)用為學(xué)科網(wǎng)APP
- 手機(jī)與電腦連接,開啟USB調(diào)試模式,通過(guò)adb devices可查看到此設(shè)備
- 在手機(jī)端(模擬器)打開應(yīng)用,進(jìn)入H5頁(yè)面

在電腦端Chrome瀏覽器地址欄輸入chrome://inspect/#devices,進(jìn)入調(diào)試模式
查看顯示出來(lái)的H5頁(yè)面地址
地址:https://m.zxxk.com/activity/appnewusergift/
chrom瀏覽器版本:75.0.3770.143

下載對(duì)應(yīng)Chromedriver
打開Chromedriver下載地址進(jìn)行下載對(duì)應(yīng)版本
http://chromedriver.storage.googleapis.com/index.html?path=75.0.3770.140/

將下載的驅(qū)動(dòng)放到一個(gè)路徑,例如:C:\Users\Administrator\Desktop\chromedriver_win32 contexts上下文操作
獲取所有上下文
driver.contexts
獲取當(dāng)前上下文
driver.context
切換上下文
方法一:
driver.switch_to.context('WEBVIEW_com.xkw.client')
方法二:
contexts = driver.contexts driver.switch_to.context(contexts[-1])
切回原生應(yīng)用
driver.switch_to.context('NATIVE_APP')實(shí)戰(zhàn)案例
實(shí)戰(zhàn)場(chǎng)景
- 啟動(dòng)學(xué)科網(wǎng)APP應(yīng)用,在發(fā)現(xiàn)頁(yè)面點(diǎn)擊現(xiàn)金券下載券領(lǐng)取活動(dòng)
- 在活動(dòng)落地頁(yè),點(diǎn)擊一鍵領(lǐng)取大禮包按鈕
- 在點(diǎn)擊登錄注冊(cè)頁(yè)面的左上角的關(guān)閉按鈕
實(shí)戰(zhàn)代碼
# _*_ coding:utf-8 _*_
import time
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
desired_caps = {
"platformName": "Android",
"platformVersion": "7.1.2",
"udid": "127.0.0.1:62001",
"appPackage": "com.xkw.client",
"appActivity": "com.zxxk.page.main.LauncherActivity",
"noReset": True,
'automationName': 'uiautomator2',
"chromeOptions": {'w3c': False},
"chromedriverExecutable": r"C:\Users\Administrator\Desktop\chromedriver_win32\chromedriver.exe"
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
driver.implicitly_wait(30)
# 點(diǎn)擊活動(dòng)入口
driver.find_element(AppiumBy.ID, "com.xkw.client:id/iv_horizontal_pic").click()
time.sleep(5)
# 獲取contexts
context = driver.contexts
# 切換到webview
driver.switch_to.context(context[-1])
driver.find_element(AppiumBy.ID, "getgifts").click()
time.sleep(1)
# 切換到Native
driver.switch_to.context("NATIVE_APP")
driver.find_element(AppiumBy.ID, "com.xkw.client:id/common_toolbar_back_img").click()
到此這篇關(guān)于Appium自動(dòng)化測(cè)試實(shí)現(xiàn)H5頁(yè)面元素定位的文章就介紹到這了,更多相關(guān)Appium H5頁(yè)面元素定位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python之字典對(duì)象的幾種創(chuàng)建方法
這篇文章主要介紹了Python之字典對(duì)象的幾種創(chuàng)建方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置詳解
關(guān)心編程語(yǔ)言的使用趨勢(shì)的人都知道,最近幾年,國(guó)內(nèi)最火的兩種語(yǔ)言非Python與Go莫屬,下面這篇文章主要給大家介紹了關(guān)于如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置的相關(guān)資料,需要的朋友可以參考下2022-05-05
Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略
這篇文章主要介紹了使用PyTorch實(shí)現(xiàn)隨機(jī)搜索策略,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
對(duì)python 匹配字符串開頭和結(jié)尾的方法詳解
今天小編就為大家分享一篇對(duì)python 匹配字符串開頭和結(jié)尾的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
django ModelForm修改顯示縮略圖 imagefield類型的實(shí)例
今天小編就為大家分享一篇django ModelForm修改顯示縮略圖 imagefield類型的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python抓取網(wǎng)頁(yè)圖片并放到指定文件夾
這篇文章主要介紹了python抓取網(wǎng)頁(yè)圖片并放到指定文件夾,需要的朋友可以參考下2014-04-04

