溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Appium自動(dòng)化測(cè)試之微信元素識(shí)別和代碼實(shí)戰(zhàn)

發(fā)布時(shí)間:2020-07-25 10:40:02 來源:網(wǎng)絡(luò) 閱讀:7767 作者:小強(qiáng)測(cè)試 欄目:軟件技術(shù)

視頻地址:http://www.xqtesting.com/blog/weixin-213.html


引子


總會(huì)有人問微信的自動(dòng)化測(cè)試怎么做。其實(shí)我不太明白,為啥你要對(duì)ta做自動(dòng)化測(cè)試啊,除非你們公司產(chǎn)品是基于微信做的開發(fā)否則沒必要。即使一個(gè)公眾號(hào)我也覺得沒必要做自動(dòng)化測(cè)試,基本功能點(diǎn)下沒問題就可以了,畢竟都是配置的,除非你后臺(tái)配置錯(cuò)了。(有時(shí)候真搞不懂這胡亂的測(cè)試,你咋不把整個(gè)微信都測(cè)一遍?。?br/>


微信的本質(zhì)


微信其實(shí)就是一個(gè)混合的app,客戶端里嵌入的webview,明白這個(gè)就好說了。大家一定要注意,app中的native可以用uiaotumator來查看元素,但webview里的ta是不行的可以使用chrome來查看,這個(gè)是很多初學(xué)者不明白的地方。


如何查看微信webview中的元素


幾個(gè)前提:

1、手機(jī)打開【開發(fā)者模式】

2、app必須是debug模式(別問我怎么弄,自己?jiǎn)栭_發(fā)去)

3、手機(jī)通過USB連接電腦,且能夠識(shí)別出來手機(jī)(不會(huì)的自己google去。。。)

4、可以×××。。。你懂的


有了這幾個(gè)前提之后就可以正式開始了,敲黑板。。。。

1、打開微信,在任意對(duì)話框中輸入debugx5.qq.com并發(fā)送

Appium自動(dòng)化測(cè)試之微信元素識(shí)別和代碼實(shí)戰(zhàn)

2、點(diǎn)擊發(fā)送成功的debugx5.qq.com,稍等片刻進(jìn)入設(shè)置頁面

3、切換到【信息】,勾選【是否打開tbs內(nèi)核】,如圖

Appium自動(dòng)化測(cè)試之微信元素識(shí)別和代碼實(shí)戰(zhàn)

4、退出設(shè)置

5、進(jìn)入【發(fā)現(xiàn)】>【看一看】

6、打開chrome,地址欄輸入chrome://inspect/#devices,可以看到設(shè)備或者你訪問的資源(看不到的自己google,很多文章介紹)

7、隨便點(diǎn)擊【看一看】里的一篇文章,在chrome中會(huì)自動(dòng)顯示出來,如下圖中的專題就是點(diǎn)擊之后出來的

Appium自動(dòng)化測(cè)試之微信元素識(shí)別和代碼實(shí)戰(zhàn)

8、點(diǎn)擊對(duì)應(yīng)的【inspect】就可以看到頁面了,接下來就可以輕松識(shí)別元素了,和用f12查看元素沒有區(qū)別,如果你還不會(huì)請(qǐng)自行面壁去吧

(此處需要×××,否則顯示的是白頁)

Appium自動(dòng)化測(cè)試之微信元素識(shí)別和代碼實(shí)戰(zhàn)


代碼實(shí)戰(zhàn)


上面這些搞定了,在Appium里寫代碼就簡(jiǎn)單了,先說下關(guān)鍵的幾個(gè)點(diǎn):

1、#必須加上此句

desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'}

小強(qiáng)提示:

微信的package name=com.tencent.mm,activity=com.tencent.mm.ui.LauncherUI,不要問我怎么知道的。。。


2、#可以通過下面的語句輸出webview的名稱

contexts=driver.contexts

print('contexts=',contexts)


3、#使用下面的語句切換到指定的webview里

driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')


4、切換到webview里面,剩下的定位方式和web一模一樣,就是上面講的元素識(shí)別方法


5、#如果想返回原生態(tài)的view,可以用下面的語句

driver.switch_to.context("NATIVE_APP")#參數(shù)固定


#以打開微信>點(diǎn)擊【發(fā)現(xiàn)】>點(diǎn)擊【看一看】>獲取文章列表中某個(gè)文章的標(biāo)題為例,其中進(jìn)入【看一看】之后就是webview了。

from appium import webdriver
import time
#QQ群522720170

desired_caps = {}

desired_caps = {
    'platformName': 'Android',
    'platformVersion': '23',
    'deviceName': 'Android Emulator',
    'unicodeKeyboard': 'True',
    'resetKeyboard': 'True',
    'appPackage': 'com.tencent.mm',
    'appActivity': 'com.tencent.mm.ui.LauncherUI',
    'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
}


driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

time.sleep(10)
driver.find_element('name','發(fā)現(xiàn)').click()
time.sleep(10)
driver.find_element('name',"看一看").click()
time.sleep(10)

#獲取當(dāng)前上下文
c=driver.contexts
print(c)
#輸出結(jié)果['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools']

#切換為 webview,名稱就是從上面的語句得來的
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')

#獲取h4標(biāo)簽的文本并打印出來
titles = driver.find_elements('tag name','h4')
print(titles[2].text)


至此就全部搞定了,是不是很簡(jiǎn)單?


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI