2016-10-19 76 views
0

我正在寫一個針對Angular 2應用程序的硒自動化。在應用程序中,用戶可以輸入一個字段來過濾一旦他們開始輸入時出現的下拉菜單。該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

你能分享鏈接到頁面嗎? – Grasshopper

+0

@Grasshopper我不能分享鏈接到頁面,因爲它是一個專有的應用程序 – dstaraster

回答

0

嘗試使用javascriptExecutor單擊選項元素。查看下面的示例。

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

好主意,我應該想到我自己,但它不起作用 - 它崩潰了下拉,就像按下一個鍵與機器人或動作。 – dstaraster