我遇到了自动填充输入文字字段。 HTML是:
<div id="customfield_11930-single-select" class="aui-ss ajax-ss long-field" data-query="35mm Capture - 2.7.1">
<input id="customfield_11930-field" class="text aui-ss-field ajs-dirty-warning-exempt" type="text" autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" aria-busy="false">
<div class="ajs-layer-placeholder">
<span class="icon aui-ss-icon drop-menu noloading">
<span>More</span>
</span>
</div>
<select id="customfield_11930" class="single-select long-field hidden js-sprint-picker aui-ss-select" data-saved-state="" data-saved-id="" data-container-class="long-field" name="customfield_11930" style="display: none;" multiple="multiple">
<option value="" selected="selected"> </option>
</select>
我对此HTML的理解是:
input(customfield_11930-field)
是用户在
div(ajs-layer-placeholder)
存储所有自动填充/建议
span()
是用户点击弹出自动填充/建议列表的地方
select(customfield_11930)
是显示自动填充/建议的地方
所以,如果我使用代码:
myDriver.findElement(By.id("customfield_11930-field")).sendKeys("35mm Capture - 2.7.1");
屏幕截图将显示:
现在如何选择自动填充/建议列表中的第一项?
“选择”元素现在是否填充了所有建议列表项?
我做的事情如下:
new Select(myDriver.findElement(By.id("customfield_11930"))).selectByVisibleText("35mm Capture - 2.7.1");
但它不起作用。
实际上我很担心这种类型的自动完成选择菜单是如何工作的,它似乎比普通的下拉列表复杂得多。
任何一个人的解释?谢谢,
答案 0 :(得分:1)
在文字输入后,有一个ID为suggestions
的新动态字段,您可以点击css选择器的第一个建议#suggestions > li:nth-child(1)
。你可以看到下面的代码:
的Python:
driver.find_element_by_css_selector("#customfield_11930-field").clear()
driver.find_element_by_css_selector("#customfield_11930-field").send_keys("35mm Capture - 2.7.1")
driver.find_element_by_css_selector("#suggestions > li:nth-child(1)").click()
爪哇:
driver.findElement(By.cssSelector("#customfield_11930-field")).clear();
driver.findElement(By.cssSelector("#customfield_11930-field")).sendKeys("35mm Capture - 2.7.1");
driver.findElement(By.cssSelector("#suggestions > li:nth-child(1)")).click();