java - Selenium:如果选择标签包含样式=“显示:无;”,如何从下拉列表中选择选项
问题描述
我必须执行选择操作,即从下拉列表中选择一个值。这是我的 iframe 的代码:
<div class="js-stools-field-filter">
<select id="filter_active" name="filter[active]" onchange="this.form.submit();" style="display: none;">
<option value="" selected="selected">- Select Active State -</option>
<option value="0">Activated</option>
<option value="1">Unactivated</option>
</select>
<div class="chzn-container chzn-container-single chzn-container-single-nosearch chzn-container-active chzn-with-drop" style="width: 220px;" title="" id="filter_active_chzn"><a class="chzn-single"><span>- Select Active State -</span><div><b></b></div></a>
<div class="chzn-drop">
<div class="chzn-search">
<input type="text" autocomplete="off" readonly="" class="active">
</div>
<ul class="chzn-results">
<li class="active-result result-selected" data-option-array-index="0" style="">- Select Active State -</li>
<li class="active-result" data-option-array-index="1" style="">Activated</li>
<li class="active-result" data-option-array-index="2" style="">Unactivated</li>
</ul>
</div>
</div>
</div>
我需要从下拉列表中选择选项。这是我的脚本:
Select sc = new Select(driver.findElement(By.id("filter_active")));
sc.selectByVisibleText("Activated");
但是,我在控制台中收到此错误:
Element is not currently visible and may not be manipulated
有人可以让我知道如何解决这个问题。
解决方案
在您发布的 HTML 中,SELECT
是隐藏的,因为它包含style="display: none;"
. 看起来 the<ul class="chzn-results">
和 childrenLI
是可见的“下拉菜单”,而 hiddenSELECT
保存选择后的值。
在这种情况下,您不能使用Select()
该类。您将需要单击可见的下拉元素(不知道那是什么……也许是INPUT
?),然后LI
使用普通的 Selenium 方法单击所需的元素。
像这样的东西应该工作......
driver.findElement(By.cssSelector("div.chzn-search > input")).click();
driver.findElement(By.xpath("//ul[@class='chzn-results']/li[.='Activated']")).click();
推荐阅读
- google-sheets - 如果问题显示名称
- javascript - 如何使用 Javascript 在字符串中找到 HTML 之类的标签?
- excel - 在 Excel VBE ActiveCodePane 中获取光标的行号
- r - data.table: 获取每组的索引 || 两个数据表
- java - 使用弹簧记录 400 和 500 错误
- c# - 那么我如何在 untiy 中禁用脚本并在同一个公共 void 中启用它(idk 它的名称)
- visual-studio - 如何将 unfloding 地图库安装到 VS 代码
- excel - 勾选时获取复选框的单元格地址
- python - 在构建 Kivy 应用程序“未安装 sdkmanager”时
- asp.net-mvc - MVC 验证复选框