Выберите из раскрывающегося списка динамическое значение и просто нужно один вариант [дублировать]

Интересно, когда вам нужно передать параметры этой функции.

Код jsfiddle

var obj = {method:function(p1,p2,p3){console.log("method:",arguments)}}

var str = "method('p1', 'p2', 'p3');"

var match = str.match(/^\s*(\S+)\((.*)\);\s*$/);

var func = match[1]
var parameters = match[2].split(',');
for(var i = 0; i < parameters.length; ++i) {
  // clean up param begninning
    parameters[i] = parameters[i].replace(/^\s*['"]?/,'');
  // clean up param end
  parameters[i] = parameters[i].replace(/['"]?\s*$/,'');
}

obj[func](parameters); // sends parameters as array
obj[func].apply(this, parameters); // sends parameters as individual values

92
задан Simulant 24 September 2013 в 09:23
поделиться

8 ответов

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

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

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

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

WebElement option = select.getFirstSelectedOption()
181
ответ дан matt freake 21 August 2018 в 10:15
поделиться
  • 1
    By.xpath (& Quot; // path_to_drop_down & Quot;). Я бы заменил его на локатор, например By.name, так как он включен. – Daniel 17 April 2012 в 03:09
  • 2
    deselectAll будет вызывать исключение UnsupportedOperationException, если выбор не поддерживает множественные выборы – Tom Hartwell 20 March 2013 в 21:42
  • 3
    В C # используйте класс SelectElement, поэтому: SelectElement salesExecutiveDropDown = new SelectElement(webDriver.FindElement(By.Id("salesExecutiveId"))); – Jeremy McGee 22 July 2013 в 15:21
  • 4
    Fyi этот код не смог выбрать раскрывающийся список, пока я не прокомментировал эту строку: //select.deselectAll (); Затем он начал работать. Ваш пробег может отличаться. – gorbysbm 1 May 2014 в 22:56
  • 5
    Обратите внимание, что deselectAll действителен только для multiselect: selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/… . – user1205577 21 October 2014 в 20:13

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

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

или

selenium.select("id=items","index=3")
3
ответ дан ajtrichards 21 August 2018 в 10:15
поделиться

Подобный вариант того, что было опубликовано выше janderson, будет так просто использовать метод .GetAttribute в selenium 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
    }
}
0
ответ дан Ben 21 August 2018 в 10:15
поделиться

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

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

Между тем

Строка textval = Selector.getFirstSelectedOption ();

element .getText ();

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

0
ответ дан Jophin P John 21 August 2018 в 10:15
поделиться

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

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

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

Спасибо,

Реха.

-2
ответ дан Kartmcad 21 August 2018 в 10:15
поделиться
  • 1
    -1 Путь чрезмерно сложный и использование устаревших методов (RenderedWebElement) – Ardesco 23 June 2011 в 22:09

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

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
ответ дан t3dodson 21 August 2018 в 10:15
поделиться
5
ответ дан thrasher 21 August 2018 в 10:15
поделиться

в рубине для постоянного использования, добавьте следующее:

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
ответ дан xyz 21 August 2018 в 10:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: