2

我正在使用 selenium、TestNG 和 java 和 eclipse 来执行自动化测试。我在点击按钮(selenium.click(“button”),将值传递给文本框(selenium.type(“component”,“value”))和点击等命令方面取得了成功,但是当它附带组件类型下拉列表(与 common 或 asp.net MVC 相关)我无法使用命令 selenium.select ("field", "value") 选择字段。

要选择值甚至是字段,我是用XPath来的,但即便如此,用下拉列表也不能,或者只能部分。

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

4

5 回答 5

2

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

   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);
    }
于 2013-07-08T05:59:07.683 回答
2

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

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

仅当鼠标移动到特定位置时才会出现下拉列表,然后您还必须使用操作

public void mouseMoveToExpandIcon(){
        Actions action = new Actions(driver);
        action.moveToElement(expandButtonXpath).perform();
    }
于 2018-11-15T07:31:17.090 回答
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();
}
于 2013-07-08T09:55:00.400 回答
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();
于 2013-11-22T05:51:25.323 回答
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");
于 2014-04-22T20:41:00.340 回答