在Selenium Webdriver中选择一个Dropdown值

时间:2018-05-16 09:42:52

标签: selenium

我正在使用Selenium WebDriver进行自动化。我需要选择一个下拉值,但我收到一个错误报告。这是我正在使用的代码:

 Select dropdown=new Select(driver.findElement(By.xpath("//*[@id=\"myModal\"]/div/div/div/fieldset/form/div[1]/div[2]/div[4]/div/div/div/div[2]"))); 
Thread.sleep(30000);
dropdown.selectByIndex(2);

但是我收到了这个错误:Element should have been "select" but was "div"

3 个答案:

答案 0 :(得分:1)

我将提供带有pageObject设计的代码

public class PageWithSelector{

    // initialise element first from element than to selector //
    @FindBy(id = "selectID")
    private WebElement selectorElement;
    private Select selector;

    public PageWithSelector(WebDriver driver) {
        super(driver);
        this.webDriver = driver;

        //in constructor init elements and also Select control//

        PageFactory.initElements(driver, this);
        selector = new Select(selectorElement);
    }


     // selector via text //
    public PageWithSelector selectFromSelectorText(String selectorItemText){
        selector = new Select(selectorElement);
        selector.selectByVisibleText(facility.getName());
        return this;
    }

     // selector via index //    
   public PageWithSelector selectFromSelectorIndex(int index) {
        selector = new Select(selectorElement);
        selector.selectByIndex(index);
        return this;
    }

}

您必须正确初始化Select(对象)。

答案 1 :(得分:0)

点击下拉列表后,您可以使用以下代码:

List<WebElement> options = driver.findElements(by.xpath(" your locator"));
for(WebElement element : options){
 if(element.getText().equals(" your value from drop down")){
    element.click();
}
}

答案 2 :(得分:0)

我经常使用解决方法。 在组合框内输入要选择的值,然后在组合框中自动输入ENTER Keypress。 现在在组合框中选择该值。 可选您还可以使用箭头键在组合框中导航。

driver.findElement(By.xpath("...")).sendKeys("Something you want to choose");
driver.findElement(By.xpath("...")).sendKeys(Keys.DOWN);
        driver.findElement(By.xpath("...")).sendKeys(Keys.ENTER);

希望这有帮助!