2011-07-25 19 views
2

WebdriverメソッドでHTMLドロップダウンリストを選択できません。私のコードで何が間違っていたのですか?あなたは私にいくつかのヒントを教えてください。Webdriverドロップダウンリストで選択/選択できません

<select> 
<option value="32">32</option> 

<option value="34">34</option> 

<option value="36">36</option> 


</select> 

public static List<WebElement> chooseSize(Integer size){ 
WebElement select = findElement(By.xpath(DropDown_Article_Size_XPATH_ID)); 
List<WebElement> options = select.findElements(By.tagName("option")); 
for(WebElement option : options){ 
    if(option.getText().equals(size)){ 
     option.isSelected(); // or .click()? 
     } 
} 
return options; 
} 
+0

webdriverのドライブはどのブラウザですか? – skaffman

+0

今すぐFirefoxでテストしました – KoKo

+0

まだ問題はあります。 – KoKo

答えて

1

このような場合は、xpath式を使用しています。あなたは多くのコードを保存します!あなたが求めているもの、これが何をすべきについては

(私はあなたのxpathが適切に対応するselectをターゲットにしていることを前提とし):

// Click select first: 
// (See http://code.google.com/p/selenium/issues/detail?id=2112) 
findElement(By.xpath(DropDown_Article_Size_XPATH_ID)).click(); 

// Then click option: 
String xpathOption = String.format("%s/option[text()='%d']", 
    DropDown_Article_Size_ID, size); 
log.debug("Selecting option by text '{}' using xpath '{}'", size, xpathOption); 
findElement(By.xpath(xpathOption)).click(); 

ところで、あなたのchooseSizeはリストを返し、なぜ、私は得ることはありませんすべてのオプションのおそらくメソッドの名前を何か意味のあるものに変更するべきです(例えば、これがあなたが望むならばgetOptionsBySize)。

0

あなたはsetSelected()を試みたことがありますか?​​はゲッターなので、何も変更されません。

0

Selenium2を使用している場合は、option.click()を使用する必要があります。

3

WebDriverのサポートクラス「org.openqa.selenium.support.ui.Select」があります。ここで

は、あなたがそれを使用する方法である:私はChromeDriverと選択に問題があることを恐れている

// First, get the WebElement for the select tag 
WebElement selectElement = driver.findElement(By.xpath(DropDown_Article_Size_XPATH_ID)); 

// Then instantiate the Select class with that WebElement 
Select select = new Select(selectElement); 

// Get a list of the options 
List<WebElement> options = select.getOptions(); 

// For each option in the list, verify if it's the one you want and then click it 
for (WebElement we : options) { 
    if (we.getText().equals(valueToSelect)) { 
     we.click(); 
     break; 
    } 
} 
+0

最新のWebDriverバージョン(2.12)では、org.openqa.selenium.support.ui。選択クラスは便利なメソッドを提供します:selectByIndex(int)、selectByValue(String)、selectByVisibleText(String)選択をシミュレートします。 Firefox 8でうまくテストしました。 –

0

。 Chrome for MacOSXでテストしたところ、.click()と.isSelected()は動作しません。 FireFoxの同じコードは期待どおりに動作します。両方のブラウザで異なることはありますか?

List<WebElement> opciones = select.getOptions(); 

for(WebElement el : opciones){ 
    System.out.println("Elemento disponible: ["+el.getAttribute("value")+"]["+el.getText()+"]"); 

    //Select actual option    
    el.click(); 
    if(el.isSelected()) 
    System.out.println("Selected: ["+el.getAttribute("value")+"]["+el.getText()+"]"); 
} 
2
Select select = new Select(driver.findElement(By.xpath("Xpath_of_Select_Element"))); 
select.selectByVisibleText("Option_to_Select"); 

これは、あなたが34

そのようシンプルを選択するために

WebElement selectElement = driver.findElement(By.xpath(DropDown_Article_Size_XPATH_ID)); 
selectElement.sendKeys("34") 

を行うことができます

0

ダウンを選択し、ドロップからオプションを選択する最も簡単な方法です。 Sendkeysはwebdriverで非常に便利なメソッドであり、さまざまな種類のオブジェクト、つまりテキストボックスの実装が異なります。Sendkeysはテキストを入力し、select要素の場合は要素を選択します。

ファイルアップロードフィールドでは、sendkeysを使ってファイルパスを入力することもできます。

歓声

Shrikant

1

それは私の作品のビットの変更、それは仕事をしていませんおかげでたくさんのような単純なコード。

Select select = new Select(driver.findElement(By.name("Status_operator"))); 
select.selectByValue("="); 
関連する問題