我正在针对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)我不知道如何,即使我能以某种方式选择一个选项,我也可以得到文本,看看我是否选择了正确的选项
如何选择选项?
谢谢!
答案 0 :(得分:0)
尝试使用javascriptExecutor
点击选项元素。请参阅下面的示例。
WebElement elementToSelect =
driver.findElement(By.xpath(".//datalist/option[contains(text(), '" + myOption + "')]"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", elementToSelect);