无法选择下拉菜单

时间:2017-08-09 01:53:35

标签: java selenium

enter image description here我想使用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]

1 个答案:

答案 0 :(得分:0)

如果下拉列表来自诸如角度之类的语言,则使用“选择”可能不起作用。我的建议是我们的selenium点击操作。

  1. 点击下拉列表将其打开
  2. 使用driver.findElements查找下拉列表中所有选项的所有项目
  3. 遍历元素并拉出元素中的文本。当您找到期望的文本时,请执行单击
  4. 以下内容可能有用:

    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下拉列表,那么使用传统的方法