嘿伙计我遇到这个问题,我有一个隐藏的选择下拉列表,其样式设置为无。
<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 =&#39; block&#39 ;;),它将我的下划线下拉到样式下拉列表的顶部。有没有办法选择这个隐藏的下拉菜单而不使用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>
答案 0 :(得分:0)
Selenium旨在以与用户相同的方式导航网页。您应该有一个可见元素,当与(hover / click)交互时将显示下拉列表。显示下拉列表后,您可以与内容进行交互。
让Selenium执行用户必须执行的相同任务。