Selenium Java - Error- org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是" select"但是"输入"

时间:2015-02-01 13:52:08

标签: java selenium-webdriver

我是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");

我无法弄清楚为什么会出现这种错误。这个名字只有一个元素。我理解它是标签输入而不是选择。但事实并非如此。

请帮忙。提前谢谢。

3 个答案:

答案 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)

Whee @Eugene是对的有多个其他因素可以直接影响这个c.lass我必须多次处理wait和不同的find元素技术。如果@ Eugene的答案不起作用,请参阅我的答案here