Jasmine 茉莉如何';期望';等待量角器承诺解决
我正在做e2e测试。 我有一个确认弹出窗口,在我点击按钮之前,它在页面上不存在。 一旦确认弹出窗口被创建,我就会从那里的元素中获取文本 之后,我单击OK按钮,这将导致确认弹出窗口从DOM中删除,并使用我之前获得的文本值向DOM添加一个新元素 问题是,因为getText()返回一个承诺,当我进行比较时,第一个元素不在屏幕上,测试失败 如果我确实希望在屏幕上显示确认弹出窗口时,我可以看到确认弹出元素的文本 Jasmine期望()如何解决承诺 提前谢谢诸如此类的事Jasmine 茉莉如何';期望';等待量角器承诺解决,jasmine,protractor,Jasmine,Protractor,我正在做e2e测试。 我有一个确认弹出窗口,在我点击按钮之前,它在页面上不存在。 一旦确认弹出窗口被创建,我就会从那里的元素中获取文本 之后,我单击OK按钮,这将导致确认弹出窗口从DOM中删除,并使用我之前获得的文本值向DOM添加一个新元素 问题是,因为getText()返回一个承诺,当我进行比较时,第一个元素不在屏幕上,测试失败 如果我确实希望在屏幕上显示确认弹出窗口时,我可以看到确认弹出元素的文本 Jasmine期望()如何解决承诺 提前谢谢诸如此类的事 element(by.id('dan
element(by.id('dangerous-activity')).click().then(function () {
element(by.id('confirmation-text')).getText().then(function (textToConfirm) {
element(by.id('confirm-button')).click().then(function () {
element(by.id('new-element')).getText().then(function (newText)) {
expect(newText).toBe(textToConfirm);
});
});
});
});
在这里,所有的承诺都被明确地解决了,所以Jasmine不再需要解决任何承诺
您可以让expect
解析新元素
承诺,将最后两行替换为:
....
expect(element(by.id('new-element')).getText()).toBe(textToConfirm);
....
但是,您不能以相同的期望获得
文本来确认
,因为正如您所指出的,它在那时已经消失了。这应该是实现您想要的最简单的方法:
$('#open-popup').click();
var textToConfirm = $('#popup-text').getText();
$('#confirm-button').click();
var newText = $('#new-element').getText();
expect(newText).toBe(textToConfirm);
注意:这将不起作用:
$('#open-popup').click();
var textToConfirmElement = $('#popup-text');
$('#confirm-button').click();
var newText = $('#new-element').getText();
expect(newText).toBe(textToConfirmElement.getText());
因为在弹出窗口关闭后,您会看到文本。hi这很有效。我使用了一些不同形式的解决方案,它解决了这个问题。谢谢