【问题标题】:java: How Can I click all options in dropdown after selecting dropdown againjava:再次选择下拉列表后如何单击下拉列表中的所有选项
【发布时间】:2018-05-10 10:42:00
【问题描述】:

我正在处理一个包含 4 个选项的下拉菜单,每次展开(或单击)下拉菜单时,我都需要单击每个选项。我已经编写了第一次单击特定元素的逻辑,但是当我展开下拉列表时,代码无法单击下拉列表中的任何其他选项。请让我知道我在哪里做错了。

代码 -

try {
    Thread.sleep(3000);     

    // gets all the options in the dropdown.
    List<WebElement> select = driver.findElements(By.xpath("//*[@class='select2-results__option']"));
    System.out.println(select.size());
    for (int i=0; i<select.size();i++) {
        select.get(i).click();
        Thread.sleep(2000);
        // drodpdown element
        List<WebElement> ele = driver.findElements(By.xpath(GetPropertValue("dropdownvalue")));
        // expands the dropdown again.
        ele.get(1).click();
        Thread.sleep(2000);
        select.get(i).click();
    }

} catch (Exception e ){
    Assert.fail("unable to click option from services");
}

下拉代码sn-p -

<ul class="select2-results__options ps-container ps-theme-default" role="tree" id="select2-j_idt2339-results" aria-expanded="true" aria-hidden="false" data-ps-id="fcad5f76-4b37-a689-7d7c-d975c236d339">

<li class="select2-results__option" id="select2-j_idt2339-result-x9ct-022" role="treeitem" aria-selected="false">Issue License</li>

<li class="select2-results__option" id="select2-j_idt2339-result-wuzg-023" role="treeitem" aria-selected="false">Issue License from Old License</li>

<li class="select2-results__option" id="select2-j_idt2339-result-b9ni-024" role="treeitem" aria-selected="false">Replace License</li>

<li class="select2-results__option" id="select2-j_idt2339-result-zj1d-025" role="treeitem" aria-selected="false">Renew License</li>

<div class="ps-scrollbar-x-rail" style="left: 0px; bottom: 3px;">
    <div class="ps-scrollbar-x" tabindex="0" style="left: 0px; width: 0px;"></div>
</div>

<div class="ps-scrollbar-y-rail" style="top: 0px; right: 3px;">
    <div class="ps-scrollbar-y" tabindex="0" style="top: 0px; height: 0px;"></div>
</div>

</ul>​

我已添加以下代码,但无法单击下拉菜单。

try {
    Thread.sleep(3000);

    WebElement dropdown = driver.findElement(By.xpath("//*[@class=' form-field ']/span[1]/span[1]/span"));

    List<WebElement> list = driver.findElements(By.xpath("//*[@role='tree']/li"));
System.out.println(list.size());
 Thread.sleep(5000);
    for(int i=1;i<list.size();i++) {
         Thread.sleep(5000);
       dropdown.click();
       Thread.sleep(3000);
        list.get(i).click();
   Thread.sleep(5000);

        System.out.println("Selected : " +list.get(i).getText());
    }

【问题讨论】:

    标签: java select drop-down-menu


    【解决方案1】:

    你可以试试下面的代码:

    WebElement dropdown = driver.findElement(By.xpath("//ul[@id='select2-j_idt2339-results']"));
        List<WebElement> options = driver.findElements(By.xpath("//ul[@id='select2-j_idt2339-results']/li"));
        for(int i=1;i<options.size();i++) {
             dropdown.click();
             Thread.sleep(3000);
            options.get(i).click();
            Thread.sleep(3000);
            System.out.println("Selected : " +options.get(i).getText());
        }
    

    另一种选择下拉选项的方法(您也可以使用 selectbyvisibletext 或 selectbyvalue 代替 selectbyindex):

    Select dropdown = new Select(driver.findElement(By.xpath("<Xpath of Dropdown>")));
    for(int i=0;i<=dropdown.getOptions().size();i++) {
        dropdown.selectByIndex(i);
        Thread.sleep(3000);
        }
    

    【讨论】:

    • 我尝试了上面提到的代码,但无法点击下拉菜单,它在那里失败了。
    • 失败在哪里?它无法找到下拉元素??你遇到了什么错误?
    • 未能点击下拉元素。它说找不到元素。
    • 我仍然看到同样的问题。第一次可以从下拉列表中选择选项,但不能第二次选择。
    • ok.. 你能告诉我 options.size() 的输出吗?是返回 5 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多