我想使用Java自动化使用Selenium Web驱动程序的下拉菜单,但HTML页面有<option disabledselected>----</option>
(参考附加屏幕截图)
我想从下拉列表中选择第二个菜单项。我尝试过很多东西,但每次收到错误信息都会。
第一种方法 - 使用ByVisibleText
:
public void selectHomeCommunity(String name){
Select hmecomm= new Select(hmecommdropdown);
hmecomm.selectByVisibleText(name);
}
public <Webelement> SelfRegistrationPage Community(String pass) {
// TODO Auto-generated method stub
enterPassKey(pass);
System.out.println("Entered into Community method");
pressGoBtn();
}
第二种方法 - JavascriptExecutor
:
((JavascriptExecutor)driver).executeScript("document.getElementById('hmecommdropdown').options.item(0).click().;");
第三种方法 - getFirstSelectedOption
:
String selectedLabel = new Select(driver.findElement(By.id("CommunityDropdown"))).getFirstSelectedOption().getText();
每次我收到的错误都是:
等待[[ChromeDriver:Chrome on XP]的可见性 (9a6751455dba60b65479430ff8f9aa00)] - &gt; id:CommunityDropdown]
答案 0 :(得分:0)
如果下拉列表来自诸如角度之类的语言,则使用“选择”可能不起作用。我的建议是我们的selenium点击操作。
以下内容可能有用:
public void clickDropdownOption(WebDriver driver, String option) throws Exception{
waitForDropdownMenuToBeVisible(driver);
WebElement dropdownMenu = driver.findElement(dropdownMenuLocator);
List<WebElement> optionElements = dropdownMenu.findElements(dropdownOptionLocator);
for(int i=0; i < optionElements.size(); i++){
if(optionElements.get(i).getText().equals(option)){
click(driver, optionElements.get(i));
waitForDropdownMenuToBeinvisible(driver);
return;
}
}
throw new Exception("Dropdown option " + option + " was not found");
}
显然,如果它是普通的HTML下拉列表,那么使用传统的方法