Selenium - 如何将焦点切换到叠加层

时间:2016-09-06 13:03:52

标签: javascript java selenium

我在主窗口顶部打开了一个术语。这就是滚动条的样子:

Scrollbar

新窗口无法识别为新窗口'或标签所以我无法正常切换到它,也不是iframe所以driver.switchTo()。frame(iframe);也不行。这是我到目前为止所尝试的:

1)单击元素(按元素我的意思是包含内容的覆盖片段。什么都不做。

2)使用以下方法切换焦点:

jse.executeScript("var ov = document.getElementsByClassName('overlay__content'); window.setTimeout(function () { ov[0].focus(); }, 0); ");

3)尝试单击然后使用切换到活动元素:

_driver.getWebDriver().switchTo().activeElement();

这些结果都不起作用。我试图切换到一个窗口然后使用ashot来获得全屏screnshot。这与iframe很有效,但我对如何在这里继续感到困惑。任何scrollBy(0,10)等都会导致主窗口滚动。

1 个答案:

答案 0 :(得分:0)

为了在overlay div中滚动你可以用这样的JavaScriptExecuter创建一个方法;

public void scrollDownInsideOf(WebElement element, int pxForScrollDown) {
    JavascriptExecutor js = (JavascriptExecutor) webDriver;
    js.executeScript("arguments[0].scrollTop = arguments[1];", element, pxForScrollDown);
}

元素应该是带有叠加层的内部div