【问题标题】:How to wait until div dropdown is loaded using selenium webdriver?如何等到使用 selenium webdriver 加载 div 下拉列表?
【发布时间】:2020-07-27 06:12:13
【问题描述】:

一个页面上有两个下拉菜单。

当我点击第一个下拉菜单时,第二个下拉选项将在几秒钟后自动加载。

我的问题来了,我怎样才能等待第二个下拉菜单使用 selenium webdriver 完全加载。

<div name="ddlFruit_N" id="ddlFruit_N" class="Searchddl">
<div class="chosen-drop">
  <div class="chosen-search">
    <input class="chosen-search-input" type="text" autocomplete="off">
  </div>
  <ul class="chosen-results">
<li class="active-result" data-option-array-index="0">Select</li><li class="active-result" data-option-array-index="1">Apple</li><li class="active-result" data-option-array-index="2">Mango</li><li class="active-result" data-option-array-index="3">Grapes</li><li class="active-result" data-option-array-index="4">Banana</li><li class="active-result" data-option-array-index="5">Guava</li>
</div>

注意:这是 div 下拉菜单

第二个下拉列表 xpath://*[@id='ddlFruit_N']/div/ul/li

我正在使用 C#,谢谢

【问题讨论】:

  • 您能提供您的 DOM 或 URL 吗?
  • 更新请查看@SeleniumUser002

标签: c# selenium selenium-webdriver


【解决方案1】:

请尝试以下代码。我们将检查在Div 中加载的选项

public static IWebElement waitForDropdownPopulate(IWebDriver driver, By by, int delayInSeconds)
{
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(delayInSeconds));
    return wait.Until<IWebElement>(drv => 
    {
        IWebElement elementList = drv.FindElement(by);
elementList.Click();
        if (elementList.FindElements(By.XPath("./div/ul//li")).Count >= 2)
        {
            return elementList;
        }

        return null;
    }
    );
}

我这样称呼它:

Myclass.waitForDropdownPopulate(driver, By.XPath("//*[@id='ddlFruit_N']"), 30);

【讨论】:

【解决方案2】:

试试下面的代码

var items = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='ddlFruit_N']/div/ul/li")))
        .FindElements(By.XPath("//*[@id='ddlFruit_N']/div/ul/li"));

要使用 seleniumExtras 库,请从 NugetPackage 安装 DotNetSeleniumExtras.WaitHelpers

【讨论】:

  • 还没有尝试过,因为@Muzzamil 代码对我有用。顺便说一句,非常感谢您的分享
猜你喜欢
  • 2015-06-11
  • 2018-09-23
  • 2018-08-28
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2013-12-25
  • 2017-01-31
相关资源
最近更新 更多