【问题标题】:How to scroll down in dropdown window in selenium webdriver?如何在 selenium webdriver 的下拉窗口中向下滚动?
【发布时间】:2017-03-07 09:54:12
【问题描述】:

<div id="boundlist-1277-listWrap" data-ref="listWrap" role="presentation" class="x-boundlist-list-ct x-unselectable x-no-touch-scroll x-scroll-container" style="overflow: auto; height: 298px;">
      <ul id="boundlist-1277-listEl" data-ref="listEl" class="x-list-plain x-scroll-scroller">
        <li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="0" data-recordid="99400" data-boundview="boundlist-1280">Assessment Completion - Returned To Functional Validation</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="1" data-recordid="99401" data-boundview="boundlist-1280">Assessment Completion - Workflow Ended</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="2" data-recordid="99402" data-boundview="boundlist-1280">Eligibility Assessment In Progress</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="3" data-recordid="99403" data-boundview="boundlist-1280">Functional Validation In Progress</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="4" data-recordid="99404" data-boundview="boundlist-1280">Functional Validation- Returned To Sponsor</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="5" data-recordid="99405" data-boundview="boundlist-1280">MEA - Workflow Ended</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="6" data-recordid="99406" data-boundview="boundlist-1280">Pending Assessment Completion</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="7" data-recordid="99407" data-boundview="boundlist-1280">Pending Eligibility Assessment</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="8" data-recordid="99408" data-boundview="boundlist-1280">Pending Pre-MEA</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="9" data-recordid="99409" data-boundview="boundlist-1280">Pending Technical Validation</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="10" data-recordid="99410" data-boundview="boundlist-1280">Pending Validation Planning</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="11" data-recordid="99411" data-boundview="boundlist-1280">Pre-MEA - Pending Sponsor Response</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="12" data-recordid="99412" data-boundview="boundlist-1280">Pre-MEA - Workflow Ended</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="13" data-recordid="99413" data-boundview="boundlist-1280">Pre-MEA in Progress</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="14" data-recordid="99414" data-boundview="boundlist-1280">Technical Validation - Returned To Sponsor</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="15" data-recordid="99415" data-boundview="boundlist-1280">Technical Validation - Workflow Ended</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="16" data-recordid="99416" data-boundview="boundlist-1280">Technical Validation In Progress</li>
<li role="option" unselectable="on" class="x-boundlist-item x-boundlist-item-over" tabindex="-1" data-recordindex="17" data-recordid="99417" data-boundview="boundlist-1280">Validation Finalized - Workflow Closed</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="18" data-recordid="99418" data-boundview="boundlist-1280">Validation Initiated - MDDT Upload In Progress</li>
<li role="option" unselectable="on" class="x-boundlist-item" tabindex="-1" data-recordindex="19" data-recordid="99419" data-boundview="boundlist-1280">Validation Planning In Progress</li>
      </ul>
    </div>

Dropdown

如何在下拉列表中向下滚动?我想选择下拉列表中的下拉值。但我无法通过使用 xpath 直接单击它,因为该值隐藏在列表中,我必须首先向下滚动。

我尝试使用此代码

WebElement element = driver.findElement(By.xpath("//li[text()='Validation Finalized - Workflow Closed']"));
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
Thread.sleep(500);

【问题讨论】:

  • 为什么要向下滚动?您是否尝试过使用 webdriver 的选择类?
  • 你能分享一下你的下拉菜单的 HTML 代码吗?
  • 已分享下拉菜单的 html 代码。它包含 div 标签,所以不能使用选择类

标签: java selenium-webdriver


【解决方案1】:

您可以使用以下代码:

// Create an array of web element for all drop-down options
List<WebElement> optionList = driver.findElements(By.xpath("//*[@id='boundlist-1277-listEl']/li"));
// The option you mentioned in your example is stored at position #17 in an array so either you can manually enter the number or you can find it by running FOR lool
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", optionList.get(17) );

// Other way that I prefer is:
JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);", optionList.get(17) );
Thread.sleep(250);

【讨论】:

    【解决方案2】:

    您可以使用for 循环并通过actions 类使用下面的代码行:

        for(int i=0,i<=(No of values present in dropdown,i++)
           String value=  locator.getText();
        {
        action.sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
        
        if(value.equalsIgnoreCase("Value to search"))
                    {
                        
                        break;
                    }
                    else
                    {
                         Webelement.click();
                    }
        }
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多