2016-10-19 19 views
0

私はAngular 2アプリケーションに対してセレンオートメーションを作成しています。アプリケーションには、入力を開始するとすぐに表示されるドロップダウンをフィルタリングするためにユーザーが入力できるフィールドがあります。 HTMLは次のようになります。selenium throws "option要素がselect"例外にありません

<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

関連する問題