1. 程式人生 > >Selenium自動化測試之學會元素定位

Selenium自動化測試之學會元素定位

語法 以及 大於 自動化測試 ram 過多 不可 console 工具

這是我經常被問到的一個問題,也是我很討厭回答的問題,因為要想回答這個問題需要知道上下文。什麽樣式的元素,有哪些屬性,是否有表單嵌套,都嘗試了哪些定位方法。。。而且沒幾個提問者能事先詳細的說明這些。哪兒像提bug一樣描述重現步驟,而且每一步都截圖,生怕開發重現不了。反正,向我提問者沒見過這樣的,大多就報著試試態度,你愛回不回,碰碰運氣說不定就回我了。

當然,我寫這一篇文章的目的肯定不是為了吐槽,我是打算拿這個鏈接丟給他看,所以,這裏會總結常見幾種情況,以及解決辦法。如果本文能不解決你的問題,你問我也沒用。


1、是否有表單嵌套。

技術分享圖片

像這樣順著定位的元素往上找,如果找到了<iframe>

標簽說明你定位的元素是在表單裏面的,你需要先切換到這個表單,再定位元素。

參考例子


2、是否打開了新窗口。

技術分享圖片

像這樣的,就是兩個窗口,從登錄窗口點擊“註冊”打開的新窗口。不切換到註冊窗口怎麽操作?

參考例子

本來多窗口不是眼瞎都能看出來,但是,前兩天一個同學的情況,登錄界面,點擊了登錄之後舊的登錄窗口關閉,新的登錄之後的窗口打開。這就有點迷惑人了。不過,你依然可以通過多窗口的處理來解決這個問題。


3、元素不可見或不滿足條件。

有些元素並不是不存在,而是不可見;或者你的操作步驟缺少前提步驟。
技術分享圖片

像這樣,我要想操作“搜索設置”不需要先鼠標懸停在“設置”上麽?鼠標懸停“設置”鏈接上就是前提條件。

技術分享圖片

請把鼠標從“設置”上面移開,是不是發現display為none,它所在的整個標簽就是因為這個屬性的變化而隱藏的。


4、定位方式不唯一,或根本就找不到任何元素。

我都試了好幾種定位方式了,怎麽看這個元素就是這個屬性,沒錯啊!這應該是你最常遇到了情況。這個時候怎麽辦呢?很簡單。檢驗你的定位方式到底有沒有找到元素。

技術分享圖片

不管用什麽定位方法,請用find_elements_by_xxx() 來定位一組元素。如果統計結果是0,說明你的定位方法找不到任何元素,你問我也幫不了你。如果大於1,說明你這種定位方法不是唯一的。

其實,不唯一還好辦,我們可以進一步篩選。
技術分享圖片

把元素的所有屬性都打印出來,看看第幾個才是你想要的。

技術分享圖片

然後,你就可以愉快的選擇你想要定位的元素了,像這樣。
技術分享圖片


最後,贈送一個快速定位元素技巧。

啟動Chrome瀏覽器,打開“開發者工具”,切換到console標簽,通過 document.querySelector() 方法使用CSS語法定位元素。
技術分享圖片

你可以快速的驗證CSS是否可以定位到元素,如果可用就復制到Selenium當中,不用每次通過運行Selenium腳本來驗證,效率上快上很多。

什麽?你不懂CSS定位?或者你看不懂我在講什麽。 你可能缺一本《Selenium 自動化測試實戰 --基於python語言》

Selenium自動化測試之學會元素定位