web自動(dòng)化最麻煩的就是找頁(yè)面元素了,因?yàn)楹芏鄷r(shí)候都找不到。剛開始接觸web自動(dòng)化測(cè)試,也是摸索中學(xué)習(xí),說說我在測(cè)試時(shí)遇到有frame時(shí),定位frame里面的元素定位不到的一個(gè)問題的解決辦法。

一開始使用的是定位出元素,右鍵-copy-copy xpath去定位

代碼實(shí)現(xiàn)就是這樣:

其中//*[@id="rrapp"]/div[1]/div[2]/div[1]/div/input 就是直接粘貼過來的。運(yùn)行時(shí)總是報(bào)錯(cuò)找不到元素:

我仔細(xì)查看了瀏覽器上F12出現(xiàn)的html文件內(nèi)容,發(fā)現(xiàn)有兩個(gè)id為rrapp的元素,而目前要定位的這個(gè)元素,剛好就在第二個(gè)id為rrapp的元素下層標(biāo)簽中。
再來看下直接copy xpath之后的內(nèi)容//*[@id="rrapp"]/div[1]/div[2]/div[1]/div/input ,當(dāng)前路徑下,找到id為rrapp的元素,之后跟上具體的路徑,但是有兩個(gè)id值一樣時(shí),這個(gè)xpath肯定就有問題了,后來我又試著用class找,補(bǔ)全元素的路徑(就當(dāng)@id="rrapp"找到的是第一個(gè),補(bǔ)全元素到第一個(gè)id為rrapp的路徑),通過文字“搜索機(jī)構(gòu)名稱”都沒有找到。
之后是一個(gè)同事說這個(gè)需要切進(jìn)入frame,去frame里面找元素,于是就試了下,果然可以。

代碼實(shí)現(xiàn)

這次執(zhí)行確實(shí)是成功了。但是目前的就在frame里面了,如果再要在主頁(yè)面上點(diǎn)擊元素,還需要再切回到主頁(yè)面,使用方法:
broswer.switch_to.default_content()
如果是嵌套的frame框架,返回到上一層的frame,使用方法:
driver.switch_to.parent_frame()
類似這個(gè)樣子:
