今天,在頁面上碰到一個非 select 標籤的下拉框,打算進行定位和模擬選中。chrome
<input aria-invalid="false" autocomplete="disabled" placeholder="請選擇" type="text" class="AABBCC-input DDCC-inputDDCCcomplete-input AABBcomplete-inputFocused AACC-inputAdornedEnd" aria-autocomplete="list" autocapitalize="none" spellcheck="false" value id="abc-autocomplete-84931">api
沒有 <select> 標籤,也沒看到<ul><li>等標籤,沒法採用通常方式。瀏覽器
第一個想法是,經過 xpath 定位到 input 後,直接給 value 賦值。結果很顯然,行不通,由於對應選項沒有真正被選中。測試
上網找了針對隱藏下拉框用 js 來定位的方法,結果也是不盡人意,由於沒有對症下藥。spa
經過 selenium 錄製一段腳本作參照。但錄製腳本是基於firefox的,頁面元素對應的標籤屬性與chrome不同,而我測試對象用的瀏覽器以chrome爲主。firefox
但這一圈下來,已經摸清了裏頭的前因後果,徹底清楚了這個下拉框寫法和其它通常寫法的不一樣之處。因而根據這個非標準狀況,本身寫。對象
先 find_element_by_xpath 方法定位下拉框按鈕,並模擬單擊,而後再定位其中某選項去選中。因爲不少屬性裏面都包含變化的id,只能用contain方法來定位。兩行代碼以下所示:element
driver.find_element_by_xpath("//button[@aria-label='Open popup']").click() #模擬點開下拉框
driver.find_element_by_xpath("//li[contains(@id,'option-0')]").click() #模擬選中第一個選項input
至此,問題解決。selenium