java

时间:2017-11-15 10:54:51

标签: java selenium selenium-webdriver

enter image description here我想点击下拉按钮并从中选择一个并点击它。我尝试了很多方法,但它无法正常工作。随附的HTML代码图片,任何人都可以帮我解决这个问题。 以下是我试过的代码

driver.findElement(By.id("homepages_dropdown")).click();

    /*List<WebElement> allElements = driver.findElements(By.xpath("//*[@id=\"homepages_item_AccountManagerDashboard\"]")); 

    for (WebElement element: allElements)
    {
          System.out.println(element.getText());
    }*/

4 个答案:

答案 0 :(得分:0)

只需使用“选择”创建一个处理下拉菜单等的对象。您可以使用“选择”按文本,索引和一堆其他选项选择元素。这是处理下拉列表和组合框等元素的最简单方法。

new Select(driver.findElement(By.id("homepages_dropdown"))).selectByVisibleText("Your option's text");

答案 1 :(得分:0)

这不是最明智的方法,但是如果你不能让开发人员通过HTML让它成为一个特定的选择元素,它可能必须这样做。我的解决方案中有类似这样的东西,其中有自定义下拉列表。

你可以先创建一个下拉元素,然后单击其中的一条记录,如果这是你想要做的事情,在你的情况下,它看起来像是突出显示的按钮元素中的跨度,所以你可以做一些事情如下:

driver.findElement(By.id("homepages_dropdown")).click();
driver.findElement(By.xpath("//li//a[@id='homepages_item_AccountManagerDashboard']").click();

上述语句将点击下拉列表,然后点击ID为homepages_item_AccountManagerDashboard的元素。

您还可以创建一个函数,根据您传递给您创建的方法的参数点击任何li,如果您可以在下拉列表中选择多个选项,请考虑这一点。

public void SelectItem(string itemText)
{
    var dropdownElement = driver.findElement(By.id("homepages_dropdown"));
    var selectionItem = driver.findElement(By.xpath("//li[text()='" + itemText + "']");
    dropdownElement.Click();
    selectionItem.Click();
}

如果您正在使用页面对象模型,这只是一个非常有效的选项,但它是让工作长期持续工作的最佳方式。

答案 2 :(得分:0)

点击Dropdown按钮和Select Option,文字为 Analytics ,您可以使用以下代码块:

driver.findElement(By.xpath("//div[@id='homepages']/button/span[@id='homepages_dropdown']")).click();
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='homepages']/ul/li/a")); 
for (WebElement element : allElements)
  if(element.getAttribute("innerHTML").contains("Analytics"))
  {
      element.click();
      break;
  }
System.out.println("Option with text as Analytics is selected");

答案 3 :(得分:0)

我自己找到了解决方案,下面的代码工作

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("homepages_dropdown")));
// drop down
driver.findElement(By.id("homepages_dropdown")).click();
Thread.sleep(2000);
// selecting configuration
driver.findElement(By.id("homepages_item_ConfigurationHomepage")).click();
Thread.sleep(2000);