量角器在构建服务器上失败 - ElementNotVisibleError
Protractor Fails on Build Server - ElementNotVisibleError
我所有的 angular 使用量角器和黄瓜的 e2e 测试在我的机器上都 运行 顺利且良好。但是一旦我 运行 在构建服务器上进行测试,我就会收到一个错误
ElementNotVisibleError: element not visible
Session info: chrome=51.0.2704.84
Driver info: chromedriver=2.21.371459
platform=Windows NT 6.1 SP1 x86_64
一开始,我认为这与时间有关,一些异步的事情正在发生,但经过数小时的调试,我终于可以在我的本地机器上重现错误。
最小化 window 是不够的,但如果我快速拖动鼠标以使 window 尽可能小,我会收到此错误。所以这只是 "window size" 的问题。
Thus the error message is quite ok, but how are protractor meant to
run on a build server?
为什么有些测试通过了?量角器似乎 "see" 构建服务器上的东西,因此
我试过了
browser.driver.manage().window().maximize();
我试过了
browser.manage().window().setSize(1920, 1200);
我尝试按照建议更改我的代码,我尝试了很多(无望的)事情。没有任何效果。
我现在的大问题:当我想在某个页面上单击最右边的按钮时,我如何 运行 在构建服务器(在我的例子中是 TFS)上以稳定的方式进行量角器测试?
短代码示例:
browser.get(browser.baseUrl + '#/somePage').then...
element(by.id(buttonId)).click();
谢谢!
更新:
我遇到问题的主要原因是 运行 在构建服务器上进行测试时屏幕分辨率的宽度为 1024,因此 setSize(1920, 1200) 失败了。出于这个原因,我现在在 onPrepare 函数中添加了当前分辨率的输出,以便将来得到提示:
onPrepare: function () {
browser.executeScript('return { height: screen.availHeight, width: screen.availWidth, top: screen.availTop, left: screen.availLeft};').then(function (result) {
console.log("Screen resolution: ");
console.log(result);
});
browser.manage().window().setSize(1920, 1200);
当然这可以稍微扩展以抛出异常或类似的东西。
有时,我们需要将所需元素显示在视图中以避免"Element not visible"错误。我们可以通过两种通用方式做到这一点:
-
var elm = element(by.id("buttonid"));
browser.actions().mouseMove(elm).click().perform()
-
var elm = element(by.id("buttonid"));
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
同时链接 有一组很好的东西你可以尝试解决这个问题。
我所有的 angular 使用量角器和黄瓜的 e2e 测试在我的机器上都 运行 顺利且良好。但是一旦我 运行 在构建服务器上进行测试,我就会收到一个错误
ElementNotVisibleError: element not visible
Session info: chrome=51.0.2704.84
Driver info: chromedriver=2.21.371459
platform=Windows NT 6.1 SP1 x86_64
一开始,我认为这与时间有关,一些异步的事情正在发生,但经过数小时的调试,我终于可以在我的本地机器上重现错误。
最小化 window 是不够的,但如果我快速拖动鼠标以使 window 尽可能小,我会收到此错误。所以这只是 "window size" 的问题。
Thus the error message is quite ok, but how are protractor meant to run on a build server?
为什么有些测试通过了?量角器似乎 "see" 构建服务器上的东西,因此
我试过了
browser.driver.manage().window().maximize();
我试过了
browser.manage().window().setSize(1920, 1200);
我尝试按照建议更改我的代码
我现在的大问题:当我想在某个页面上单击最右边的按钮时,我如何 运行 在构建服务器(在我的例子中是 TFS)上以稳定的方式进行量角器测试?
短代码示例:
browser.get(browser.baseUrl + '#/somePage').then...
element(by.id(buttonId)).click();
谢谢!
更新:
我遇到问题的主要原因是 运行 在构建服务器上进行测试时屏幕分辨率的宽度为 1024,因此 setSize(1920, 1200) 失败了。出于这个原因,我现在在 onPrepare 函数中添加了当前分辨率的输出,以便将来得到提示:
onPrepare: function () {
browser.executeScript('return { height: screen.availHeight, width: screen.availWidth, top: screen.availTop, left: screen.availLeft};').then(function (result) {
console.log("Screen resolution: ");
console.log(result);
});
browser.manage().window().setSize(1920, 1200);
当然这可以稍微扩展以抛出异常或类似的东西。
有时,我们需要将所需元素显示在视图中以避免"Element not visible"错误。我们可以通过两种通用方式做到这一点:
-
var elm = element(by.id("buttonid")); browser.actions().mouseMove(elm).click().perform()
-
var elm = element(by.id("buttonid")); browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
同时链接