我最近开始为我的项目工作selenium
POC,并使用IE browser
。我正在尝试点击一个显示在<div>
标记内的下拉框,但是在页面加载时div
标记不可见/ 隐藏,并且仅一旦点击了UI,就会出现在DOM中。
如何找到隐藏的div
并单击该
<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;
我一直在尝试寻找这个问题的解决方案,并找到了以下内容:
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()
答案 0 :(得分:1)
Selenium的设计方式使其不允许与DOM上不可见的元素进行交互。它旨在执行用户可以手动执行的操作。
因此,有两种方法可以执行此操作: -
您可以使用JavaScript
执行DOM中存在的所有元素(可见/隐藏)的操作,您可以使用下面的代码点击元素。
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);