根据我对使用 selenium 的自动化 Web 应用程序的经验,我有以下假设。据我所知,selenium 无法与下拉选项直接交互,因为它们被认为是不可见的(不活动的)。它始终有效的方式是为此使用 js。首先使用 css 选择器正确定位元素并使用 firepath 验证它(附加到 fox 中的 firebug)
所以你有 css 选择器:
String css=....;
public void jsClickByCss(String cssLocator){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssLocator+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
}
jsClickByCss(css);
您还可以尝试使用Builder的另一种方法,即高级用户交互 API:这个想法非常简单。首先,您应该使下拉列表向下滚动,以便您想要单击的元素变得可见,等待 driver.manage.timeout 然后选择所需的下拉元素并单击。
WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();
Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.MoveToElement(mnEle).perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();
你可以在这里阅读一些额外的信息
希望这对你有用)