今天,在页面上碰到一个非 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