如何在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)); } }
谢谢,
雷卡。