1、報(bào)錯(cuò)NoSuchElementException——定位不到元素
分析的可能原因:
-
頁(yè)面還沒(méi)有加載出來(lái),就對(duì)頁(yè)面上的元素進(jìn)行的操作
-
元素在iframe中,先要理解下frame的實(shí)質(zhì),frame中實(shí)際上是嵌入了另一個(gè)頁(yè)面,而webdriver每次只能在一個(gè)頁(yè)面識(shí)別,因此需要先定位到相應(yīng)的frame,對(duì)那個(gè)頁(yè)面里的元素進(jìn)行定位。
-
元素在新的窗口中,未切換句柄等原因
-
動(dòng)態(tài)id定位不到元素
解決方案:如果發(fā)現(xiàn)是動(dòng)態(tài)id,直接用xpath定位或其他方式定位。 -
二次定位,如彈出框登錄
-
不可見(jiàn)元素定位——比如:type=hidden,display=none的元素?zé)o法定位
-
元素定位方式寫(xiě)錯(cuò)
注意??
當(dāng)提示NoSuchElementException,可以去驅(qū)動(dòng)打開(kāi)的窗口查找一下,因?yàn)橛械脑赜抿?qū)動(dòng)打開(kāi)和用瀏覽器直接打開(kāi)是不一樣的
2、?findElements與findElement
findElements找出所有元素,返回list集合;
findElement從上往下找出第一個(gè)
3、判斷頁(yè)面是否存在某元素
?Selenium沒(méi)有直接提供判斷是否存在的方法
1、可以使用findElements返回的數(shù)量判斷;或者判斷findElement是否拋出異常
2、元素的幾個(gè)方法:
-
isDisplayed()
-
本身這個(gè)函數(shù)用于判斷某個(gè)元素是否存在頁(yè)面上
-
這里的存在不是肉眼看到的存在,而是html代碼的存在。某些情況元素的visibility為hidden或者display屬性為none,我們?cè)陧?yè)面看不到但是實(shí)際是存在頁(yè)面的一些元素
-
-
isEnable
-
用來(lái)判斷界面元素是否是可用的,返回值為boolean值。
-
用于存儲(chǔ)input、select等元素的可編輯狀態(tài),可以編輯 返回true,否則 返回false
-
如果該值為 true,則該元素在網(wǎng)頁(yè)中啟用,如果該元素在網(wǎng)頁(yè)中未啟用,則返回 false。
-
常見(jiàn)場(chǎng)景例如:列表不勾選數(shù)據(jù)時(shí),刪除按鈕置灰,不可點(diǎn)擊,只有列表勾選后,才可點(diǎn)擊刪除按鈕。
-
-
isSelected()
-
這個(gè)是判斷某個(gè)元素是否被選中
-
4、元素是否可見(jiàn)和元素是否可點(diǎn)擊是不一樣的??
可點(diǎn)擊一定可見(jiàn)
可見(jiàn)不一定可點(diǎn)擊(比如有可能被彈窗蓋住了...)
不可見(jiàn)一定不可點(diǎn)擊
存在不一定可見(jiàn),可見(jiàn)一定存在
5、display:none 和 visibility:hidden 和 type ="hidden"
-
visibility: hidden----將元素隱藏,但是在網(wǎng)頁(yè)中該占的位置還是占著。
-
例如有三個(gè)table,將中間的一個(gè)table hidden掉,你會(huì)發(fā)現(xiàn)在那個(gè)被hidden的table看不見(jiàn)了,但是,中間會(huì)留有很大的一空白,而這個(gè)空白就是這個(gè)table沒(méi)有被隱藏時(shí)所占的位置;
-
-
display: none----將元素的顯示設(shè)為無(wú),即在網(wǎng)頁(yè)中不占任何的位置。
-
例如有三個(gè)table,將中間的一個(gè)table none掉,你會(huì)發(fā)現(xiàn)在剩下的兩個(gè)table中間不會(huì)有任何的空白。就好像中間的那個(gè)table從來(lái)不存在過(guò)一樣。
-
而none的作用更像是把元素從網(wǎng)頁(yè)中“去除”(當(dāng)然不是真的去除,只是效果是如此)
-
-
type ="hidden"和上面兩個(gè)不一樣,它叫做隱藏域,作為input 的一種輸入類(lèi)型,它的特點(diǎn)就是“看不見(jiàn)”;
-
存在即合理,那我們來(lái)看看他的作用:在表單插入中隱藏域的目的在于收集和發(fā)送信息,以利于被處理表單的程序所使用
-
注:隱藏只是在網(wǎng)頁(yè)頁(yè)面上不顯示輸入框,但是雖然隱藏了,還是具有form傳值功能。一般用來(lái)傳值,而不必讓用戶(hù)看到。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-846767.html
-
它可以隱藏有用但又不能讓瀏覽者看到的信息。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-846767.html
-
到了這里,關(guān)于【Selenium】UI自動(dòng)化|元素定位常見(jiàn)問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!