我一直在调试测试,发现量角器找到了正确的元素,但位置(x和y)没有链接到找到的按钮的位置.当在此元素上调用click时,它会错过并单击错误的位置,从而导致测试失败.
作为一个注释,这些测试似乎在其他机器上运行良好,唯一的区别是测试失败的操作系统是Windows 10?
有谁知道量角器/硒如何确定元素的位置.
提前致谢.
杰克里夫斯
编辑:
在评论后请求一些例子:
要获取页面对象:
browser.get('examplePageAddress')
要获取按钮所在的标题:
var elem = element.all(by.className('header')).get(0)
要获取按钮位于标题内的div:
var div = elem.element(by.name('examplename'))
获得实际按钮
var button = element(by.name('exampleButtonName'))
在实际测试中,调用一个简单的button.click(),这就是按钮大约50px.
通过调试和写入控制台,我已经确认选择了正确的元素[使用.getInnerHTML()]并通过测量按钮的位置确定它大约是50px不同[使用.getLocation()来确定返回的x和y量角器]
在实际测试中,调用一个简单的button.click(),这就是按钮大约50px
在这种情况下,首先移动到元素,然后执行单击:
browser.actions().mouseMove(button).click().perform();
或者,滚动到元素的视图:
browser.executeScript("arguments[0].scrollIntoView();", button.getWebElement()); button.click();
请注意,getLocation()
它本身取决于可见区域 - 浏览器确定的视口.它可能在不同的浏览器和不同的操作系统中有所不同.也可以看看:
屏幕截图中的WebElement.getLocation和WebElement.getSize
并且,您实际上可以获得viewport
大小并在执行测试的浏览器和系统上进行比较 - 我很确定您将获得不同的值,请参阅:
使用JavaScript获取浏览器视口尺寸
您还可以查看getBoundingClientRect()
案例中的返回值:
该
Element.getBoundingClientRect()
方法返回元素的大小及其相对于视口的位置.
browser.executeScript("return arguments[0].getBoundingClientRect();", button.getWebElement()).then(function (rect) { console.log(rect.left); console.log(rect.top); });