我正在使用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"
答案 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);
希望这有帮助!