对于隐藏性质的非标准的动态 id 的下拉框,如何定位和选中

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

相关文章
相关标签/搜索