c# - 如何等到使用 selenium webdriver 加载 div 下拉列表?
问题描述
一个页面上有两个下拉菜单。
当我点击第一个下拉菜单时,然后在第二个下拉选项中将在几秒钟后自动加载。
我的问题来了,我怎样才能等待第二个下拉列表使用 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# 谢谢
解决方案
请尝试以下代码。我们将检查加载选项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);
推荐阅读
- git - Jenkinsfile Pipeline (Declarative):在推送提交到 Github 存储库时触发我的管道
- json - React Js 选择输入地址映射
- r - 在ggplot中水平对齐多字轴文本标签
- artifactory - 如何使用 API 调用检查 Artifactory 中的“允许匿名访问”
- c# - Xamarin 滑块问题和恢复应用程序状态
- python - 更改 Kivy 进度条的颜色和背景
- javascript - 在 Vue 中使用 nanoid 失败并出现“缺少文件扩展名 cjs”
- r - dplyr::mutate 除一个以外的所有数值变量?
- firebase - Flutter Web Google 登录无法在移动浏览器上运行
- powerapps - 向多个实体添加项目是相关的