量角器从 dom 中删除元素
Protractor removes element from the dom
由于我们使用的模板有一种奇怪的(而且不太酷)行为,我被困在量角器测试中。
在页面加载时,模板有覆盖,将在 1 秒后以这种方式隐藏:
$(document).ready(function(config){
setTimeout(function(){
$('.page-loading-overlay').addClass('loaded');
$('.load_circle_wrapper').addClass('loaded');
},1000);
});
*我觉得很糟糕(不想对此发表评论)
无论如何,我的测试失败了,因为他们 运行 比一秒还快,他们抛出这个错误:
UnknownError: unknown error: Element is not clickable at point (463, 625). Other element would receive the click: <div class="page-loading-overlay loaded">...</div>
因为显然是接收点击的叠加层。
我在测试中找到了设置超时的解决方法,但这确实会减慢我的套件和 CI/CD 进程。并且把测试代码搞得乱七八糟
代码如下:
it('should test something', function(){
setTimeout(function(){
// test code
}, 1000);
});
我想知道是否有任何方法可以从 beforeEach
语句中的 DOM 中删除一个元素,以完全删除叠加层,因为我不想测试它并且我'我不担心它坏了。
有什么建议吗?
我不认为在测试期间删除 DOM 结构的一部分是个好主意。不使用超时,而是显式等待元素可点击:
var elm = element(by.id("myid"));
var EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable(elm), 5000);
您可以使用 browser.executeScript
在浏览器上下文中执行一些代码:
beforeEach(function() {
browser.executeScript("$('.page-loading-overlay').remove();");
});
由于我们使用的模板有一种奇怪的(而且不太酷)行为,我被困在量角器测试中。
在页面加载时,模板有覆盖,将在 1 秒后以这种方式隐藏:
$(document).ready(function(config){
setTimeout(function(){
$('.page-loading-overlay').addClass('loaded');
$('.load_circle_wrapper').addClass('loaded');
},1000);
});
*我觉得很糟糕(不想对此发表评论)
无论如何,我的测试失败了,因为他们 运行 比一秒还快,他们抛出这个错误:
UnknownError: unknown error: Element is not clickable at point (463, 625). Other element would receive the click: <div class="page-loading-overlay loaded">...</div>
因为显然是接收点击的叠加层。
我在测试中找到了设置超时的解决方法,但这确实会减慢我的套件和 CI/CD 进程。并且把测试代码搞得乱七八糟
代码如下:
it('should test something', function(){
setTimeout(function(){
// test code
}, 1000);
});
我想知道是否有任何方法可以从 beforeEach
语句中的 DOM 中删除一个元素,以完全删除叠加层,因为我不想测试它并且我'我不担心它坏了。
有什么建议吗?
我不认为在测试期间删除 DOM 结构的一部分是个好主意。不使用超时,而是显式等待元素可点击:
var elm = element(by.id("myid"));
var EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable(elm), 5000);
您可以使用 browser.executeScript
在浏览器上下文中执行一些代码:
beforeEach(function() {
browser.executeScript("$('.page-loading-overlay').remove();");
});