我理解如何使用selectByIndex方法从下拉列表中选择元素。但是,当我尝试在以下HTML代码段上执行selectByIndex(select.selectByIndex (index)
)时:
<select id="destinationAllocationId" name="destinationAllocationId">
<optgroup label="Anywhere Virtual Cards">
<option value="1555555555f0a19">NNN0 [*-2453]</option>
<option value="1555555555f0519">NNN1 [*-8354]</option>
<option value="155555555550419">NNN2 [*-5765]</option>
<option value="155555555520919">NNN3 [*-8875]</option>
</optgroup>
</select>
</div>
我无法维持所选的选项。
首先它似乎工作(下拉菜单打开,正确的选项在蓝色中突出显示)。但是,一旦程序继续执行(与下拉列表无关),dro pdown将恢复为原始状态(默认选项)。
换句话说,最初程序选择合适的选项就好了但它会自动恢复为默认选项,并且在下拉菜单消失后实际上不会更改下拉列表中的值(通常当我手动选择一个选项时)我可以看到在下拉菜单关闭时选择了该选项,但在这种情况下,只要下拉列表打开,选项就会被选中,但一旦关闭,就会选择默认选项)
为什么会发生这种情况的任何想法
答案 0 :(得分:0)
我也有这个问题
这就是我解决它的方式
/**
* helper method for handling drop downs
* @param idPrefix the id of the drop down without any _xy
* @param value the value to be selected
*/
public void clickDropdown(String idPrefix, String value) {
// find & click on the label element of the drop down
firefoxDriver.findElement(By.id(idPrefix + "_label")).click();
// find & choose element from drop down
firefoxDriver.findElement(By.xpath("//div[@id='" + idPrefix + "_panel']/div/ul/li[text()='" + value + "']")).click();
}
你这样称呼它:
// choosing an element in the drop down menu
clickDropdown("projectForm:stellvertreter", "StringToSelect");
这是我写的与primefaces一起使用,无论如何你必须修改它,但你明白了
关于选择和还原的问题...尝试按回车键按下所选项目或再次点击它...没有用我的方法