2011-08-03 74 views
14

私たちはWebアプリケーションで「統合」テストを実行するために、WebDriverとJBehaveを使用しています。フォーム入力に値を入力するメソッドがあります。Selenium WebDriverはコンボボックスの項目を選択しますか?

@When("I enter $elementId value $value") 
public void enterElementText(final String elementId, final String value) { 
    final WebElement webElement = webdriver.findElement(By.id(elementId)); 
    webElement.clear(); 
    webElement.sendKeys(value); 
} 

しかし、私はそれが(当然)

java.lang.UnsupportedOperationExceptionが失敗し、ドロップダウンリストの項目を選択するために、これを使用してみてください:あなたが唯一の 要素の値を設定することそれらは入力要素です

コンボで値を選択するにはどうすればよいですか?

+0

が重複する可能性(http://stackoverflow.com/をしようとした場合質問/ 5805585/webdriver-htmlunitdriver-java-drop-down) –

答えて

17

これはそれを行う方法です:

@When("I select $elementId value $value") 
public void selectComboValue(final String elementId, final String value) { 
    final Select selectBox = new Select(web.findElement(By.id(elementId))); 
    selectBox.selectByValue(value); 
} 
2

セレンのパラダイムは、ユーザーが実際に何をするかをシミュレートすることになっているということです。これは、クリックまたはナビゲーションのキーのいずれかになります。

Actions builder = new Actions(driver); 
Action action = builder.click(driver.findElement(By.id(elementId))).build(); 
action.perform(); 

findElementにフィードする作業セレクタを取得する限り、問題はありません。私は、CSSセレクタが複数の要素を含むものに対してより良い賭けになることを発見しました。サンプルページがありますか?

+0

私のために動作しません、私はアクションクラスを見つけることができません。セレン2.xを使用するBTW。しかし、私は重複としてマークしている他のSOの質問を参照してください。 –

+0

最新バージョンをダウンロードしてください。私はそれがActionBuilderまたは何かと呼ばれていたと思う –

7

セレンでサポートパッケージには、あなたが必要なすべてが含まれています

using OpenQA.Selenium.Support.UI; 

SelectElement select = new SelectElement(driver.findElement(By.id(elementId))); 
select.SelectByText("Option3"); 
select.Submit(); 

あなたは別のパッケージとしてNuGetを通してそれをインポートすることができます。http://nuget.org/packages/Selenium.Support

4

ext js combobox typeAheadを使用して、UIで値を表示させる。

var theCombo = new Ext.form.ComboBox({ 
... 
id: combo_id, 
typeAhead: true, 
... 
}); 

driver.findElement(By.id("combo_id-inputEl")).clear(); 
driver.findElement(By.id("combo_id-inputEl")).sendKeys("The Value you need"); 
driver.findElement(By.id("combo_id-inputEl")).sendKeys(Keys.ARROW_DOWN); 
driver.findElement(By.id("combo_id-inputEl")).sendKeys(Keys.ENTER); 

これも価値があるdoesn't作業は[webdriverを+ HtmlUnitDriver +のJava +ドロップダウン]の

driver.findElement(By.id("combo_id-inputEl")).sendKeys("The Value you need"); 
driver.findElement(By.className("x-boundlist-item")).click(); 
+0

Javaで動作します:いくつかの 'WebElementのtemplateInput'与え、' templateInput.sendKeys(STANDARD_TEXT + Keys.ARROW_DOWN + Keys.ENTER); – barclay

関連する問題