我正在将我的Selenium 1代码转换为Selenium 2,但找不到任何简单的方法来选择下拉菜单中的标签或获取下拉菜单的选定值。您知道如何在Selenium 2中实现吗?
这里有两个可以在Selenium 1中工作但在Selenium 2中不起作用的语句:
browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");
我正在将我的Selenium 1代码转换为Selenium 2,但找不到任何简单的方法来选择下拉菜单中的标签或获取下拉菜单的选定值。您知道如何在Selenium 2中实现吗?
这里有两个可以在Selenium 1中工作但在Selenium 2中不起作用的语句:
browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");
SelectElement salesExecutiveDropDown = new SelectElement(webDriver.FindElement(By.Id("salesExecutiveId")));
- Jeremy McGeedeselectAll
方法仅适用于多选下拉框:https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/Select.html#deselectAll()。 - user1205577driver.findElement(By.id("id_dropdown_menu")).click();
driver.findElement(By.xpath("xpath_from_seleniumIDE")).click();
在 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")
请尝试使用以下方法:
selenium.select("id=items","label=engineering")
或者
selenium.select("id=items","index=3")
这个方法将返回下拉列表中的选择值,
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();
将返回下拉列表中的所有元素。
WebElement dropdownlist = driver.findElement(By.xpath(locator));
Select listbox = new Select(dropdownlist);
使用select类的方法及示例:
selectByIndex(int index): Select the option at the given index.
listbox.selectByIndex(2);
selectByVisibleText(java.lang.String text): Select all options that display text matching the argument
listbox.selectByVisibleText(“Date”);
你可以这样做:
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
}
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
}
}
Selenium WebDriver中的“Select”类用于选择和取消选择下拉列表中的选项。可以通过将下拉列表的webElement作为参数传递给其构造函数来初始化Select类型的对象。
WebElement testDropDown = driver.findElement(By.id("testingDropdown")); Select dropdown = new Select(testDropDown);
从下拉列表中选择选项
有三种从下拉列表中选择选项的方法-
dropdown.selectByIndex(3);
- 根据其“value”属性选择选项。dropdown.selectByValue("Database");
dropdown.selectByVisibleText("数据库测试");
这是从下拉框中选择值的代码
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));
}
}
谢谢,
Rekha。