元素不可点击,因为另一个元素遮住了元素,使元素重叠

时间:2019-05-04 13:35:37

标签: javascript testing protractor

我想单击页面上的一个元素,但是另一个div与此元素的一半重叠。当我手动访问页面时,一切正常,该元素是可单击的。当我在config.js中设置窗口大小时,该测试有效

browser.manage().window().setSize(1500, 1500)

我的问题是页面必须以较小的窗口尺寸进行测试,因此我无法像这样更改窗口尺寸。运行测试时,我收到错误消息

Element <button id="button"> is not clickable at point because another element <div id="div"> obscures it

div遮盖了该元素时,是否可以单击该元素?

2 个答案:

答案 0 :(得分:1)

如果没有其他效果,则可以使用executeScript单击它:

 browser.executeScript(
      "document.querySelector('[id=\"button\"]').click()"
    );

答案 1 :(得分:1)

您可以使用JS脚本。在您的代码中定义此操作

    /**
     *  Clicks on passed element by injecting js click() in the context of window
     *  @param {ElementFinder}      $element    Locator of element
     *  @param {number}             timeout     Time in ms (med. is 1000ms)
     *  @return {promise.Promise}
     */
    jsClick: ($element, timeout = timeouts.ms1000) =>
        browser.wait(
            protractor.ExpectedConditions.presenceOf($element),
            timeout,
            "waitThenClickScript on " + $element.locator()
        ).then(() => browser.executeScript(
            "arguments[0].click();",
            $element.getWebElement()
        ))

它将等待elem的出现,然后在浏览器控制台中注入代码以单击elem。所以就做

jsClick($elementToClick);

当您不想知道某物是否可见并且不想单击某个元素时也可以使用它(无需向下滚动页面直至可见)。另一方面,请不要完全依赖它,因为点击点击是用户界面验证的一部分