【发布时间】:2015-08-12 21:36:36
【问题描述】:
大家好,我遇到了这个问题,我有一个隐藏的选择下拉菜单,其样式设置为无。
<div>
<select id="selectForm" style="width: 285px; display: none;" name="formId">
<option value="36784">EMAIL 4</option>
</select>
<div class="sbox sbox_1cbc5b38 selectForm" tabindex="0" style="width: 285px;">
<div class="sbox_sel">
<div class="sbox_seltext" contenteditable="false">Report</div>
<div class="sbox_arrow"/>
</div>
</div>
<a id="previewForm" class="preview-button"/>
</div>
当我为选择标签查找 By.id 时,我发现元素不可见。当我试图点击 div 时,同样的错误。我找到了一种使用 jsExecutor 使该下拉菜单可见的方法。这是我的代码,可以让这个下拉列表与交互可见:
public static void BatchResults(String form){
WebDriverWait wait = new WebDriverWait(driver, 60);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('selectForm').style.display='block';");
WebElement selectFormElement =
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("selectForm")));
Select selectForm = new Select(selectFormElement);
selectForm.selectByVisibleText(form);
js.executeScript("document.getElementById('selectForm').style.display='none';");
}
@Test(priority = 1)
public void runTest() {
String selectForm = "EMAIL 4";
Main.BatchResults(selectForm);
}
}
我的问题是,在 jsExecutor 中,我将样式设置为 (style.display='block';) 并将我的下划线下拉列表置于样式下拉列表之上。有没有办法在不使用 jsExecutor 或我应该使用什么其他选项的情况下选择这个隐藏的下拉菜单?此外,在将其设置为阻止后,我仍然无法从下拉列表中选择我想要的选项,然后在选择后没有选择
<ul class="sbox_opts sbox_fa9ea48e" style="width: 283px; top: 610.5px;
left: 330.333px; max-height: 54.5px; display: none;">
<li class="sbox_opt">EMAIL 4</li>
</ul>
【问题讨论】:
-
如果用户无法与之交互,您希望如何在现实世界中设置它?
-
用户可以与之交互,手动测试它是否有效。我只是在自动化它时遇到了问题。
-
不,他们不能。它设置为
display: none。 -
这只是包含选项的下划线下拉菜单。最重要的是,有一个样式下拉菜单,我无法与之交互。
-
不,您仍在尝试与底层隐藏的下拉菜单进行交互。您可能想与
div.selectForm进行交互,而不是#selectForm。
标签: java selenium selenium-webdriver automation