Gal*_*Ziv 7 jasmine protractor
我正在进行e2e测试.我有一个确认弹出窗口在页面上不存在,直到我点击一个按钮.一旦确认弹出窗口被创建,我就从那里的元素中获取文本.
之后,我单击OK按钮,这会导致从DOM中删除确认弹出窗口,并且还会向DOM添加一个新元素,其值为我之前获得的文本.
问题是,因为getText()返回一个promise,当我进行比较时,屏幕上没有第一个元素,测试失败.
如果我确实期望屏幕上的确认弹出窗口,我可以看到确认弹出元素的文本.
Jasmine期望()如何解决这个承诺?
提前致谢
像这样的东西?
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);
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
这里所有的承诺都是明确解决的,所以Jasmine不再需要解决任何承诺了.
您可以expect
解决new-element
承诺,将最后两行替换为:
....
expect(element(by.id('new-element')).getText()).toBe(textToConfirm);
....
Run Code Online (Sandbox Code Playgroud)
但你不能得到textToConfirm
同样的期望,因为它已经消失了,如你所指出的那样.