Python + Selenium 定位非selected型下拉框的方法


最近在嘗試給自己負責的模塊寫UI自動化的Demo

登錄及切換頁面比較順利

但是遇到下拉框的選擇時,遇到了一點困難

我負責的模塊頁面的下拉框並非Select類型,無法使用select_by_index or select_by_value等方法

其下拉框的html長這樣:

 

是ul下包裹100+li的形式

 

先說一下錯誤路徑:

(1)先定位到產品名稱字段,然后通過send_key()把想要錄入的值輸入

結果:前端設定錄入后必須點擊才能選上,導致最后提交時,報該字段為空

(2)嘗試兩次點擊

先定位到產品名稱字段

然后定位下拉選項

兩次定位均使用XPath方式,且使用的是Chrome插件 ChroPath

結果:程序報錯,報element can not interable 或者 Unable to locate element等錯誤

嘗試加入睡眠時間,未果

(3)兩次查找,一次點擊

代碼如下:

Product_list = browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='請選擇產品名稱']")
Product_list.find_element_by_xpath('//span[text()="040004    興業銀行2013專戶4號"]').click()

結果:仍然報錯

(4)嘗試自己寫Xpath

搜了無數的文章,自己嘗試寫了無數次

終於解決了,也算是對我即將崩潰的心靈的一次慰藉

說一下成功的這一次的Xpath的編寫路徑:

打開Xpath Helper,按住Shift,查看我要選擇的下拉框所在的塊

找到對應div,往下查找特殊的能唯一標識元素位置的節點

最終的Xpath長這樣:

//div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]

下圖為關鍵節點的位置示意圖:

 

Bingo,終於完美解決,附上對應代碼:

browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='請選擇產品名稱']").click()
time.sleep(3)
browser.find_element_by_xpath('//div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]').click()

 

長嘆一口氣:

只要大方向正確,那就得多嘗試、不氣餒

加油加油加油!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM