Как выбрать / получить опцию выпадающего в Selenium 2

java selenium drop-down-menu selenium-webdriver

206934 просмотра

8 ответа

Я преобразовываю свой код селена 1 в селен 2 и не могу найти простой способ выбрать метку в раскрывающемся меню или получить выбранное значение в раскрывающемся списке. Вы знаете, как это сделать в Selenium 2?

Вот два утверждения, которые работают в Selenium 1, но не в 2:

browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");
Автор: user786045 Источник Размещён: 12.11.2019 09:44

Ответы (8)


184 плюса

Решение

Взгляните на раздел о заполнении форм с помощью веб-драйвера в документации по селену и javadoc для класса Select .

Чтобы выбрать параметр на основе метки:

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

Чтобы получить первое выбранное значение:

WebElement option = select.getFirstSelectedOption()
Автор: janderssn Размещён: 22.06.2011 05:55

5 плюса

driver.findElement(By.id("id_dropdown_menu")).click();
driver.findElement(By.xpath("xpath_from_seleniumIDE")).click();

удачи

Автор: thrasher Размещён: 14.02.2014 03:35

4 плюса

в 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")
Автор: AlekseiPetrovski Размещён: 31.07.2012 08:32

3 плюса

Попробуйте использовать:

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

или же

selenium.select("id=items","index=3")
Автор: coolcub Размещён: 03.12.2012 10:03

0 плюса

Опция, аналогичная той, что была опубликована выше janderson, заключается в простом использовании метода .GetAttribute в селене 2. Используя это, вы можете получить любой элемент, имеющий определенное значение или метку, которую вы ищете. Это можно использовать, чтобы определить, есть ли у элемента метка, стиль, значение и т. Д. Обычный способ сделать это состоит в том, чтобы пройтись по пунктам в выпадающем меню, пока вы не найдете нужный элемент и выберите его. В 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
    }
}
Автор: Ben Размещён: 14.02.2014 06:33

0 плюса

Вы можете сделать так:

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
}
Автор: Praveen Размещён: 18.06.2014 12:26

0 плюса

Этот метод вернет выбранное значение для выпадающего списка,

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 ();

Вернет все элементы в раскрывающемся списке.

Автор: Jophin P John Размещён: 07.12.2017 09:51

-2 плюса

Это код для выбора значения из выпадающего

Значением для selectlocator будет xpath или имя раскрывающегося списка, а для optionLocator будет выбрано значение из раскрывающегося списка.

public static boolean select(final String selectLocator,
        final String optionLocator) {
    try {
        element(selectLocator).clear();
        element(selectLocator).sendKeys(Keys.PAGE_UP);
        for (int k = 0; k <= new Select(element(selectLocator))
                .getOptions().size() - 1; k++) {
            combo1.add(element(selectLocator).getValue());
            element(selectLocator).sendKeys(Keys.ARROW_DOWN);
        }
        if (combo1.contains(optionLocator)) {
            element(selectLocator).clear();
            new Select(element(selectLocator)).selectByValue(optionLocator);
            combocheck = element(selectLocator).getValue();
            combo = "";

            return true;
        } else {
            element(selectLocator).clear();
            combo = "The Value " + optionLocator
                    + " Does Not Exist In The Combobox";
            return false;
        }
    } catch (Exception e) {
        e.printStackTrace();
        errorcontrol.add(e.getMessage());
        return false;
    }
}



private static RenderedWebElement element(final String locator) {
    try {

        return (RenderedWebElement) drivers.findElement(by(locator));
    } catch (Exception e) {
        errorcontrol.add(e.getMessage());
        return (RenderedWebElement) drivers.findElement(by(locator));
    }
}

Спасибо,

Рекх.

Автор: Kartmcad Размещён: 22.06.2011 06:23
Вопросы из категории :
32x32