我正在尝试使用Protractor测试是否当前可以看到用于确认记录删除的引导模式窗口。
要删除的记录显示在角度ng-repeat中,因此我必须从那里激活删除按钮。
如果我测试isPresent
,测试总是传递true,因为它在DOM中查找模态窗口,它将始终存在。但是,当我期望为真时,对isDisplayed
的测试总是返回false。
这是一些代码......
// Use the .all repeater to search the array of presented records
element.all(by.repeater('entries in presentData')).then(function(presentData) {
// get the first record and open the options menu
presentData[0].element(by.css('.dropdown-toggle')).click();
// In that first record click the delete button
presentData[0].element(by.css('.delete-link')).click();
browser.waitForAngular();
// Remove the 'fade' class from the Bootstrap modal, I heard animations can cause some issues for testing
browser.executeScript("$('.modal').removeClass('fade');");
// Expect that the .modal-dialog is true
expect(element(by.className('modal-dialog')).isDisplayed()).toBe(true);
});
我已经尝试了各种其他stackoverflow和github问题的各种组合,但到目前为止我没有任何工作。
你可以放下的任何光线都会非常感激!
答案 0 :(得分:5)
将评论转为答案。
如果在最后一个期望之前添加browser.sleep(5000)
然后是一个时间问题,您可能需要将活动等待合并为explained here,其中包括waitReady.js脚本,添加{{1在你的onPrepare块中,然后将最后一个expect替换为:
require('./waitReady.js');
期望将等待元素出现,然后等待它可见。
在这些情况下,使用waitReady.js脚本可以避免使用睡眠。
您也可以在var elm = element(by.className('modal-dialog');
expect(elm.waitReady()).toBeTruthy();
之后立即尝试另一个browser.waitForAngular();
,并希望Protractor知道如何等待JS注入。