selenium throws“选项元素不在选择中”异常

时间:2016-10-19 16:07:24

标签: angularjs selenium

我正在针对Angular 2应用程序编写selenium自动化。在应用程序中,用户可以键入一个字段来过滤一旦开始输入就会出现的下拉列表。 HTML看起来像这样:

<input> /* this is where the user starts typing */
<datalist>
    <option>Option 1</option>
    <option>Option 2</option>
    ...
</datalist>

我正在获取输入元素并输入部分文本:

WebElement inputField = driver.findElement(By.xpath(".//input[@name='inputField']"));
inputField.clear();
inputField.sendKeys(partialText);

这是按预期工作的。列表下降并适当过滤。接下来,我找到包含我想要的选项的元素:

WebElement option =
            driver.findElement(By.xpath(".//datalist/option[contains(text(), '" + myOption + "')]")); 

该通话成功。但当我尝试点击()时,我得到:

org.openqa.selenium.WebDriverException: unknown error: option element is not in a select

我尝试过使用动作和机器人,但我遇到了两个问题:   1)当我试图按下向下箭头时,下拉菜单关闭,2)我不知道如何,即使我能以某种方式选择一个选项,我也可以得到文本,看看我是否选择了正确的选项

如何选择选项?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用javascriptExecutor点击选项元素。请参阅下面的示例。

WebElement elementToSelect =
        driver.findElement(By.xpath(".//datalist/option[contains(text(), '" + myOption + "')]")); 
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", elementToSelect);