Javascript 《茉莉花》中的条件期望?
我正在测试一个可能出现随机覆盖的页面 这些HTML/CSS元素会阻塞整个屏幕,并在显示时强制关闭它们 如何编写Jasmine测试Javascript 《茉莉花》中的条件期望?,javascript,jasmine,protractor,Javascript,Jasmine,Protractor,我正在测试一个可能出现随机覆盖的页面 这些HTML/CSS元素会阻塞整个屏幕,并在显示时强制关闭它们 如何编写Jasmine测试it(“…”),以便有条件地 在初始屏幕加载时检查此弹出窗口 用单击()关闭弹出窗口 检查弹出窗口是否确实关闭 不使用expect,因为此弹出窗口并不总是存在,并且测试用例可能会失败 这是我目前拥有的,如果对话框覆盖不存在,它就会失败 Jasmine测试用例描述 describe("close header warning if opened", function
it(“…”)
,以便有条件地
- 在初始屏幕加载时检查此弹出窗口李>
- 用
单击()关闭弹出窗口
- 检查弹出窗口是否确实关闭
expect
,因为此弹出窗口并不总是存在,并且测试用例可能会失败
这是我目前拥有的,如果对话框覆盖不存在,它就会失败
Jasmine测试用例描述
describe("close header warning if opened", function () {
it("should check for header warning", function () {
writeTitleToLog("close header warning if opened");
element(by.css('.header-warning-container')).isDisplayed().then(function (displayed) {
if(displayed) {
element(by.css('.close-container')).click();
}
});
});
it("should not have the header warning", function () {
expect(element(by.css('.header-warning-container')).isPresent()).toBeFalsy();
});
});
测试输出
landing page
should check for header warning, and close it - fail
should not have the header warning, once it is closed - pass
看看这是否适合你 在进行操作时,请使用isDisplayed进行检查。然后,如果元素在那里。单击关闭按钮。等待它关闭。然后,在仍然在if块内的情况下,执行您的预期,以确保它已关闭。如果警告不存在,则不会失败,因为它将跳过预期
overlays.headerWarning.isDisplayed().then(function(result){
if(result){
overlays.headerWarningCloseButton.click();
browser.wait(protractor.until.elementIsNotVisible(overlays.headerWarningCloseButton), 3000, 'Header warning overlay did not close');
expect(overlays.headerWarning.isDisplayed()).toBeFalsy('Header was displayed after attempted close');
} else {
//do nothing
}
});
结果。。如果元素不存在,我就不能使用
isDisplayed()
。。它将抛出一个错误。这是现在正确通过的解决方案
describe("close header warning if opened", function () {
it("should check for header warning", function () {
writeTitleToLog("close header warning if opened");
var headerElm = by.css('.header-warning-container');
element(headerElm).isPresent().then(function (isPresent) {
if(isPresent) {
element(by.css('.close-container')).click();
}
});
});
it("should not have the header warning", function () {
expect(element(by.css('.header-warning-container')).isPresent()).toBeFalsy();
});
});
“弹出窗口”是什么意思<代码>警报()?请分享一些代码,而不是javascript警报。。但是CSS/HTMLOverlyCSS/HTMLOverlay不会阻止JS的执行,所以Jasmine在运行代码时应该没有问题。你到底遇到了什么问题?你试过什么吗?看看我的更新。。当前测试失败,但没有给我错误消息(如未找到元素)。。它失败了。哪一个
失败了?
结果是,我需要使用isPresent()
而不是isDisplayed()
我也很喜欢你的例子,尽管它可能会减慢测试速度isPresent()
不错,看起来不错!即使元素不在那里,我也可以让isDisplay作为检查来工作,但我是从一个页面对象调用它的,它对元素是否在那里的“验证”排序较少。也许这就是区别?