gpt4 book ai didi

javascript - 由于 NoSuchElementError 测试失败

转载 作者:行者123 更新时间:2023-11-28 01:03:10 26 4
gpt4 key购买 nike

我的测试有时会失败。我非常希望它每次都能通过。这是一个显示开放图层 map 的页面,其中有一些带有数字的气泡。当页面打开时,我们单击状态过滤器,然后期望某个气泡中显示特定的数字。

错误是:NoSuchElementError:没有这样的元素。

它没有说明找不到哪个元素。当我查看屏幕截图时,我可以看到它从未单击过滤器复选框。或者至少没有在屏幕截图中显示出来。 (当测试通过时,它会显示单击的复选框)

这是测试代码:

beforeEach(function() {
ptor = protractor.getInstance();
ptor.ignoreSynchronization = true;

});

function waitForMap(){
ptor.wait(function () {
return element(by.css('label[for="checkbox-status-all"]')).isPresent();
}, 5000);

}

it('should click checkbox and expect 30 to be shown in bubble', function () {
browser.get(ptor.params.testurl).then(function () {
waitForMap();
element(by.css('label[for="checkbox-status-b0"]')).click();
var bedscount = ptor.findElement(protractor.By.id('marker_10'));
expect(bedscount.getInnerHtml()).toEqual('<span>30</span>');
});
});

最佳答案

如果页面确实是 Angular 页面,则删除这一行:

ptor.ignoreSynchronization = true;

所以 Protractor 可以正常等待。

在最新版本的 Protractor 上,您不需要 ptor = protractor.getInstance(),只需开始使用 browser 而不是 ptor

我还会拆分测试步骤,而不是在一个 it() block 内执行太多操作。它有助于处理日志和调试问题,例如我的测试在哪里中断?

// TODO: Move to page object file
var mapElm = $('label[for="checkbox-status-all"]');
var chkElm = $('label[for="checkbox-status-b0"]');
var bedscountElm = $('#marker_10 span');

// A more general function to wait for elements on non-angular pages
function waitForElmPresent(elmFinder) {
browser.wait(function() {
return elmFinder.isPresent();
}, 5000);
}

it('opens the test page', function() {
browser.get(browser.params.testurl);
});

it('waits for the map', function() {
// shouldn't be necessary with ignoreSyncronization is left alone
waitForElmPresent(mapElm);
});

it('also waits for the checkbox before clicking', function() {
// shouldn't be necessary with ignoreSyncronization is left alone
waitForElmPresent(chkElm);
});

it('clicks the checkbox', function() {
chkElm.click();
});

it('and also waits for the bubble to be present', function() {
// shouldn't be necessary with ignoreSyncronization is left alone
waitForElmPresent(bedscountElm);
});

it('expect 30 to be shown in bubble', function() {
expect(bedscountElm.getText()).toEqual('30');
});

关于javascript - 由于 NoSuchElementError 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com