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

這是一個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更嚴謹一些,上述代碼還少了一些判斷,在實際應用中不可忽視
