【问题标题】:Select an option from hidden drop down in selenium从 selenium 的隐藏下拉菜单中选择一个选项
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我同意,我尝试单击下拉框,但仍然无法选择我应该选择的选项。
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 2018-10-14
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
相关资源
最近更新 更多