如何使用selenium在下拉列表中选择值?

时间:2013-07-07 13:45:45

标签: java selenium selenium-webdriver selenium-rc testng

我正在使用selenium,testng和带ecplipse的java来执行自动测试。我在命令上取得了成功,例如点击按钮(selenium.click("按钮")),将值传递给文本框(selenium.type(" component",& #34;值")和点击,但当它带有组件类型下拉列表(与common或asp.net mvc相关)时,我无法使用命令seleniu选择字段.select(" field&# 34;,"价值")。

要选择值甚至是字段,我使用xpath,但即便如此,下拉列表也不能,或者可以部分使用。

当下拉列表接受我输入的值时,我可以使用selenium.click,但如果没有,我到目前为止没有尝试过任何内容。

5 个答案:

答案 0 :(得分:2)

使用webdriver你可以用Select类做我已经发布了一个代码,请在下面工作    看看,Select Class有api可以通过索引和值来选择下拉值,看看Select api了解更多信息

   public static void dropdown() 
    {
    WebDriver driver = new FirefoxDriver();
    driver.get("http://demosthenes.info/blog/166/HTML-Forms-Drop-down-Menus");
    Select sele = new Select(driver.findElement(By.id("state")));
    sele.selectByIndex(1);
    }

答案 1 :(得分:2)

有几种方法可以从下拉列表中选择元素。以下是其中的一些内容,您可以将其保留为常用的下拉操作,并调用所需的任何方法。

Microsoft.Office.Interop.Word

您可以调用上述方法,例如

//select the dropdown using "select by visible text"
        public static void dropDownSelectByText(WebElement webElement, String VisibleText){
            Select selObj=new Select(webElement);
            selObj.selectByVisibleText(VisibleText);
        }

//select the dropdown using "select by index"
public static void dropDownSelectByIndex(WebElement webElement, int IndexValue){
    Select selObj=new Select(webElement);
    selObj.selectByIndex(IndexValue);
}

//select the dropdown using "select by value"
public static void dropDownSelectByValue(WebElement webElement, String Value){
    Select selObj=new Select(webElement);
    selObj.selectByValue(Value);
}

仅当鼠标移至特定位置时才会显示下拉列表,那么您还必须使用“动作”

CommonPageOperations.dropDownSelectByValue(selectSubClientFromDropDownXpath,strSubClientName);

答案 2 :(得分:0)

WebElement select = driver.findElement(By.id("selection"));
List<WebElement> options = select.findElements(By.tagName("option"));
for (WebElement option : options) {
  if("Germany".equals(option.getText()))
    option.click();
}

答案 3 :(得分:0)

Actions actions = new Actions(driver);
WebElement dBox1= (new    WebDriverWait(driver,10)).until(ExpectedConditions.elementToBeClickable(By.id("selection""))).    selectByVisibleText("");
actions.moveToElement(dBox1);
actions.click();
actions.perform();

答案 4 :(得分:0)

您必须使用Selenium中的Select来从下拉值中进行选择。

//按ID

WebDriver driver = new FirefoxDriver();
new Select (driver.findElement(By.id("usState"))).selectByVisibleText("FL");

//来自XPath

new Select (driver.findElement(By.xpath("xPath for dropdown"))).selectByVisibleText("FL");