我是java和selenium的新手。我正在尝试在我的一个项目网站上学习自动化
但是我陷入了一个下拉状态。 下面是HTML for drop-down。
<td>
<select name="NAV_LOB_FLD.XMFRAMEWORK.XMCONTROL.1" size="1">
<option value="" selected="selected">Select Business Line</option>
<option value="X01">Auto</option>
<option value="J57">Businessowners(ISO)</option>
<option value="X22">Dwelling Fire</option>
<option value="X26">Farmowners</option>
<option value="X24">Homeowners</option>
<option value="X44">Umbrella - Personal Lines</option>
<option value="J34">Watercraft</option>
</select></td>
我的代码是
Select SelectLOB = new Select(driverIE.findElement(By.name("NAV_LOB_FLD.XMFRAMEWORK.XMCONTROL.1")));
SelectLOB.selectByValue("Auto");
我无法弄清楚为什么会出现这种错误。这个名字只有一个元素。我理解它是标签输入而不是选择。但事实并非如此。
请帮忙。提前谢谢。
答案 0 :(得分:1)
谢谢@Eugene @Saifur。我尝试了值X01和不同的元素技术(Xpath,css),但它不能在IE 8或11中运行,而且这个应用程序只支持IE
我创建了HTML文件并在firefox中尝试过它。
然后我试了
WebElement select = driverIE.findElement(By.tagName("select"));
System.out.println(select);
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for (WebElement option : allOptions) {
System.out.println(String.format("Value is: %s", option.getAttribute("value")));
option.click();}
它从下拉列表中提供了我想要的价值观。
所以我将代码修改为
new Select(driverIE.findElement(By.tagName("select"))).selectByVisibleText("Auto");
我知道这不是正确的解决方案,而是临时解决方法。谢谢。
答案 1 :(得分:0)
您正在使用
SelectLOB.selectByValue("Auto");
但是正确的代码应该是
SelectLOB.selectByValue("X01");
请查看是否可以解决问题。它适用于我的Chrome驱动程序。
答案 2 :(得分:0)
wait
和不同的find元素技术。如果@ Eugene的答案不起作用,请参阅我的答案here