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