代码之家  ›  专栏  ›  技术社区  ›  aleroot

如何使用Selenium WebDriver和java从CSS自定义下拉列表中选择项目?

  •  2
  • aleroot  · 技术社区  · 7 年前

    我想在CSS下拉列表中选择一个项目,但似乎没有办法,我们可以以谷歌酒店评论页面为例 here 如何通过selenium以编程方式选择最近的评论?

    基本上,我希望看到酒店的所有评论按最近的而不是最有用的排序,但由于默认情况下是按最有用的排序,我需要通过编程切换下拉列表。

            Select select = new Select(driver.findElement(By.xpath("//*[@id=\"gsr\"]/g-lightbox/div[2]/div[3]/div/div/div/div[1]/div[3]/div[2]/g-dropdown-menu/g-popup/div[2]/g-menu")));
            select.deselectByIndex(1);
    

    但我有个例外( org.openqa.selenium.support.ui.UnexpectedTagNameException

    Element should have been "select" but was "g-dropdown-menu"
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   yong    7 年前

    分析:

    Selenium Java API:选择。类仅适用于使用HTML select标记的下拉列表。对于通过其他方式实现的下拉菜单,如JQuery下拉菜单插件,请选择class not support,对于此类下拉菜单,您需要单击下拉菜单以显示选项,然后选择所需的选项。

    public void selectSortby(String sortBy) {
      // click on dropdown to expand options
      driver.findElement(By.xpath("//div[span[text()='Sort by:']]//g-dropdown-button").click();
      // choose option
      driver.findElement(By.xpath("//g-menu-item/div[text()='"+sortBy+"']")).click();
    }