从selenium中的隐藏下拉列表中选择一个选项

时间:2015-08-12 21:36:36

标签: java selenium selenium-webdriver automation

嘿伙计我遇到这个问题,我有一个隐藏的选择下拉列表,其样式设置为无。

<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>

1 个答案:

答案 0 :(得分:0)

Selenium旨在以与用户相同的方式导航网页。您应该有一个可见元素,当与(hover / click)交互时将显示下拉列表。显示下拉列表后,您可以与内容进行交互。
让Selenium执行用户必须执行的相同任务。