Интересно, когда вам нужно передать параметры этой функции.
Код 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
Взгляните на раздел о заполнении форм формами с помощью webdriver в документации на селен и javadoc для класса Select .
Чтобы выбрать параметр, основанный на метке:
Select select = new Select(driver.findElement(By.xpath("//path_to_drop_down")));
select.deselectAll();
select.selectByVisibleText("Value1");
Чтобы получить первое выбранное значение:
WebElement option = select.getFirstSelectedOption()
Попробуйте использовать:
selenium.select("id=items","label=engineering")
или
selenium.select("id=items","index=3")
Подобный вариант того, что было опубликовано выше 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
}
}
Этот метод вернет выбранное значение для раскрывающегося списка,
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 ();
Вернет все элементы в раскрывающемся списке.
Это код для выбора значения из раскрывающегося списка
. Значение для 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));
}
}
Спасибо,
Реха.
вы можете сделать так:
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
}
в рубине для постоянного использования, добавьте следующее:
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")
SelectElement salesExecutiveDropDown = new SelectElement(webDriver.FindElement(By.Id("salesExecutiveId")));
– Jeremy McGee 22 July 2013 в 15:21deselectAll
действителен только для multiselect: selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/… . – user1205577 21 October 2014 в 20:13