wake-up-neo.net

Auswahl/Auswahl der Dropdown-Option in Selenium 2

Ich konvertiere meinen Selenium 1-Code in Selenium 2 und kann keine einfache Möglichkeit finden, ein Etikett in einem Dropdown-Menü auszuwählen oder den ausgewählten Wert eines Dropdown-Menüs abzurufen. Wissen Sie, wie man das in Selenium 2 macht?

Hier sind zwei Aussagen, die in Selenium 1, aber nicht in 2 funktionieren:

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

Schauen Sie sich den Abschnitt zum Ausfüllen von Formularen mit dem Web-Treiber in der Selenium-Dokumentation und im Javadoc für die Select -Klasse an.

So wählen Sie eine Option basierend auf dem Label aus:

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

So erhalten Sie den ersten ausgewählten Wert:

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

viel Glück

5
thrasher

in Ruby für die ständige Verwendung hinzufügen

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

und Sie können den Wert auswählen:

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

Versuchen Sie es mit:

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

oder

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

Eine ähnliche Option zu dem, was oben von janderson gepostet wurde, wäre die Methode .GetAttribute in Selenium 2. Verwenden Sie diese Option, um jedes Element mit einem bestimmten Wert oder einer bestimmten Bezeichnung zu suchen, nach dem Sie suchen. Dies kann verwendet werden, um zu bestimmen, ob ein Element über eine Beschriftung, einen Stil, einen Wert usw. verfügt. Eine übliche Methode besteht darin, die Elemente in der Dropdownliste durchzublättern, bis Sie das gewünschte Element gefunden und ausgewählt haben. In 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

Diese Methode gibt den ausgewählten Wert für das Dropdown-Menü zurück.

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;
  }

Inzwischen 

String textval = Selector.getFirstSelectedOption ();

element.getText (); 

Gibt alle Elemente in der Dropdown-Liste zurück.

0
Jophin P John

das kannst du so machen:

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