如何在Selenium 2中select/获取下拉选项

我正在将selenium1代码转换为selenium2,无法find任何简单的方法来select下拉菜单中的标签或获取下拉选定的值。 你知道在Selenium 2中怎么做?

以下是在Selenium 1中工作的两个声明,但不是在2中:

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

看看在selenium文档中使用webdriver 填充表单的部分以及Select类的javadoc。

要根据标签select一个选项:

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

要获得第一个选定的值:

 WebElement option = select.getFirstSelectedOption() 
 driver.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 

你将能够select价值:

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

尝试使用:

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

要么

 selenium.select("id=items","index=3") 

与janderson上面发布的内容类似的选项是在selenium 2中简单地使用.GetAttribute方法。使用这种方法,您可以抓取任何具有特定值或正在查找的标签的项目。 这可用于确定元素是否具有标签,样式,值等。执行此操作的常用方法是循环下拉列表中的项目,直到find所需项目并将其选中。 在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 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 } 

这是从下拉列表中select值的代码

selectlocator的值将是xpath或下拉框的名称,而optionLocator将从下拉框中select值。

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

谢谢,

雷卡。