selenium 定位input輸入框下的選擇項


今天的問題與下圖中的類似

這是一個input型輸入框,當我點擊或輸入值時,輸入框下方會顯示選擇項幫助快速輸入,代碼如下:

<input class="v-input some" autocomplete="off" name="some"/>
<input name="any" style="display: none;"/>
<ul class="V-ss bb ">
<li class="v-select-item">蘋果</li>
<li class="v-select-item">櫻桃</li>
<li class="v-select-item">藍莓</li>
</ul>

 一開始我只定位了inout輸入框,向其中輸入數據“蘋果”,然后點擊查找,這時問題出現了,雖然頁面刷新了,但是並未進行查找

問題存在的原因是,輸入框雖然提供了輸入,但是必須從出現的選擇項中進行點擊,完成選擇,才可進行查找,由此我就需要定位到代碼中相應的li

解決方法1:

首先向輸入框中輸入值,然后下方選項就會只顯示<li>蘋果</li>,然后在查找input輸入框的兄弟元素下的li(此時是唯一的)

drive.find_element_by_name("some").input("蘋果“)
drive.find_element_by_xpath("//input[@name='some']/following-sibling::ul/li").click()    

 

解決方法2:

點擊輸入框,將會顯示下方選項,然后查找input輸入框下兄弟元素下的li(此時是一個列表),然后傳入值,遍歷lil列表,找到和傳入值相同的li的text值,進行點擊

drive.find_element_by_name("some").click()
lilist=drive.find_elements_by_xpath("//input[@name='some']/following-sibling::ul/li")
for li in lilist:
    if li.text=="蘋果"
        li.click()

 我認為方法2比方法1更嚴謹一些,上述代碼還少了一些判斷,在實際應用中不可忽視


免責聲明!

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



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