web-dev-qa-db-ja.com

Selenium 2でドロップダウンオプションを選択/取得する方法

Selenium 1コードをSelenium 2に変換していますが、ドロップダウンメニューでラベルを選択したり、ドロップダウンの選択した値を取得する簡単な方法が見つかりません。 Selenium 2でそれを行う方法を知っていますか?

Selenium 1では機能するが2では機能しない2つのステートメントを次に示します。

browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");
95
user786045

Seleniumのドキュメントで Select クラスのjavadocを使用して フォームの入力 を使用するセクションをご覧ください。

ラベルに基づいてオプションを選択するには:

Select select = new Select(driver.findElement(By.xpath("//path_to_drop_down")));
select.deselectAll();
select.selectByVisibleText("Value1");

最初に選択した値を取得するには:

WebElement option = select.getFirstSelectedOption()
184
janderssn
driver.findElement(By.id("id_dropdown_menu")).click();
driver.findElement(By.xpath("xpath_from_seleniumIDE")).click();

がんばろう

5
thrasher

常に使用するためのRubyに、以下を追加:

module Selenium
  module WebDriver
    class Element
      def select(value)
        self.find_elements(:tag_name => "option").find do |option|
          if option.text == value
            option.click
              return
           end
       end
    end
  end
end

値を選択できるようになります。

browser.find_element(:xpath, ".//xpath").select("Value")
4

使用してみてください:

Selenium.select("id=items","label=engineering")

または

Selenium.select("id=items","index=3")
3
coolcub

上記でjandersonが投稿したものと同様のオプションは、Selenium 2の.GetAttributeメソッドを使用するだけです。これを使用すると、探している特定の値またはラベルを持つアイテムを取得できます。これを使用して、要素にラベル、スタイル、値などがあるかどうかを判断できます。これを行う一般的な方法は、ドロップダウンの項目をループして、目的の項目を見つけて選択することです。 C#で

int items = driver.FindElement(By.XPath("//path_to_drop_Down")).Count(); 
for(int i = 1; i <= items; i++)
{
    string value = driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).GetAttribute("Value1");
    if(value.Conatains("Label_I_am_Looking_for"))
    {
        driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).Click(); 
        //Clicked on the index of the that has your label / value
    }
}
0
Ben

このメソッドは、ドロップダウン用に選択された値を返します。

public static String getSelected_visibleText(WebDriver driver, String elementType, String value)
  {
    WebElement element = Webelement_Finder.webElement_Finder(driver, elementType, value);
   Select Selector = new Select(element);
    Selector.getFirstSelectedOption();
    String textval=Selector.getFirstSelectedOption().getText();
    return textval;
  }

その間

String textval = Selector.getFirstSelectedOption();

element.getText();

ドロップダウンのすべての要素を返します。

0
Jophin P John

あなたはこのようにすることができます:

public void selectDropDownValue(String ValueToSelect) 
{

    webelement findDropDownValue=driver.findElements(By.id("id1"))    //this will find that dropdown 

    wait.until(ExpectedConditions.visibilityOf(findDropDownValue));    // wait till that dropdown appear

    super.highlightElement(findDropDownValue);   // highlight that dropdown     

    new Select(findDropDownValue).selectByValue(ValueToSelect);    //select that option which u had passed as argument
}
0
Praveen