如何使用Selenium Web驱动程序找到隐藏的div元素

时间:2017-01-29 23:16:52

标签: selenium-webdriver hidden

我最近开始为我的项目工作selenium POC,并使用IE browser。我正在尝试点击一个显示在<div>标记内的下拉框,但是在页面加载时div标记不可见/ 隐藏,并且仅一旦点击了UI,就会出现在DOM中。 如何找到隐藏的div并单击该

&#13;
&#13;
<DIV class="rfdSelectBox rfdSelectBox_Vista rfdSelectBoxDropDown" id=rfdSubMenu1485730150408 style="WIDTH: 188px; OVERFLOW-Y: auto; POSITION: absolute; LEFT: 746px; DISPLAY: none; TOP: 108px; VISIBILITY: hidden" rfdParentID="Skinnedctl00_ChangeGroupPopup_C_ddlCategory11"><UL>
<LI class=rfdSelect_selected unselectable="on">Select</LI>
<LI unselectable="on">Direct Reports</LI>
<LI unselectable="on">9 Box</LI>
<LI unselectable="on">Group</LI>
<LI unselectable="on">Manager Level</LI>
<LI unselectable="on">Functional Team</LI>
<LI unselectable="on">Job Function</LI>
<LI unselectable="on">Indirect/My Lane</LI>
<LI unselectable="on">Custom Group</LI>
<LI unselectable="on">Functional Team Leader</LI>
<LI unselectable="on">Quartile</LI>
<LI unselectable="on">No Existing Recommendation</LI>
<LI unselectable="on">ALL</LI>
<LI unselectable="on">TeamMate</LI></UL></DIV>
&#13;
&#13;
&#13;

我一直在尝试寻找这个问题的解决方案,并找到了以下内容:

WebDriverWait wait=new WebDriverWait(driver,20);
WebElement element=wait.until(ExpectedConditions.visibilityOfElementLocated(add));
Actions builder = new Actions(driver);   
builder.keyDown(Keys.CONTROL).click(element.findElement(add)).sendKeys(Keys.ENTER).moveByOffset( 10, 25 ).click(element.findElement(categoryDropDown)).sendKeys(Keys.ENTER).keyUp(Keys.CONTROL).build().perform();

注意:由于某种原因.click()对我不起作用,所以我一直在使用.sendKeys(keys.Enter)代替.click()

1 个答案:

答案 0 :(得分:1)

Selenium的设计方式使其不允许与DOM上不可见的元素进行交互。它旨在执行用户可以手动执行的操作。

因此,有两种方法可以执行此操作: -

  1. 在UI上执行步骤,使元素可见,然后与元素进行交互。
  2. 您可以使用JavaScript执行DOM中存在的所有元素(可见/隐藏)的操作,您可以使用下面的代码点击元素。

    JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("arguments[0].click();", element);