我想单击页面上的一个元素,但是另一个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
遮盖了该元素时,是否可以单击该元素?
答案 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);
当您不想知道某物是否可见并且不想单击某个元素时也可以使用它(无需向下滚动页面直至可见)。另一方面,请不要完全依赖它,因为点击点击是用户界面验证的一部分