Nightwatch JS - IF Else IF断言
Nightwatch JS - IF Else IF assertion
我是 Javascript( Nightwatch JS ) 和一般编程的新手。
我的 If 、 Else If 、 Else 测试用例有一个问题, 没有 继续执行 Else If 语句。
我认为这是因为我的 IF 语句中的条件是断言 ( .expect.element(); )
我想知道是否有人可以指导我如何处理我的 IF 语句。
本质上我想验证一下:
If (checkbox is un-clickable) {
run set code;
} Else if (this checkbox is clickable) {
run set code;
} Else {
.end();
}
这是我做的样本测试。
' Uninstall Missions Module ' : function(uninstallModule) {
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall')
.setValue('#edit-text', "Missions")
.pause(800);
uninstallModule.expect.element('#edit-uninstall-missions').to.be.present;
uninstallModule.waitForElementVisible('//*[@id="system-modules-uninstall"]/table/tbody/tr[31]/td[3]/div/div/ul/li/a', 1000, false);
if (uninstallModule.expect.element('#edit-uninstall-missions').to.not.be.enabled) {
uninstallModule.expect.element('body').text.to.contain('Remove mission entities')
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall/entity/mission')
.verify.urlEquals('http://drupal8.develop:8091/admin/modules/uninstall/entity/mission');
uninstallModule.expect.element('body').text.to.contain('Are you sure you want to delete all mission entities?');
uninstallModule.click('xpath', '//*[@id="edit-submit"]');
uninstallModule
.pause(10000)
.verify.visible("body > div.layout-container > main > div.region.region-highlighted > div > h2", "All mission entities have been deleted.");
} else if (uninstallModule.expect.element('#edit-uninstall-missions').to.be.enabled) {
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall')
.setValue('#edit-text', "Missions");
uninstallModule.click('#edit-uninstall-missions');
uninstallModule.pause(800);
uninstallModule.verify.urlEquals("http://drupal8.develop:8091/admin/modules/uninstall/confirm");
uninstallModule.click('xpath', '//*[@id="edit-submit"]');
uninstallModule.pause(1000);
uninstallModule.verify.visible('body > div.layout-container > main > div.region.region-highlighted > div.messages.messages--status', "The selected modules have been uninstalled.");
} else {
uninstallModule.end();
}
},
}
关于 nightwatch(和其他端到端测试框架)有两点需要了解
- 所有操作都是异步的。即使代码可以通过框架看起来是同步的,但最终,一切都是异步的。 读取值 也需要异步代码。
- 使用期望值时,如果期望值未被验证,代码会抛出错误;你不能用它们来读取值。
有了nightwatch,你可以使用getAttribute来读取你需要的值:
client.getAttribute('#edit-uninstall-missions', 'enabled', result => {
// I'm not sure about the type returned in result.value
// you can test it and adjust
const enabled = result && result.value !== "false"
&& result.value !== false;
if (enabled){
// Continue your test here
} else {
// Another test here
}
});
这是我所做的。
uninstallModule.getAttribute('#edit-uninstall-missions', 'disabled', function(results) {
console.log(results.value);
if (results.value == "true") {
console.log("It's true bro");
} else if (results.value != "true") {
console.log ("It's null");
} else {
console.log("It's Neither");
}
});
我是 Javascript( Nightwatch JS ) 和一般编程的新手。
我的 If 、 Else If 、 Else 测试用例有一个问题, 没有 继续执行 Else If 语句。
我认为这是因为我的 IF 语句中的条件是断言 ( .expect.element(); )
我想知道是否有人可以指导我如何处理我的 IF 语句。
本质上我想验证一下:
If (checkbox is un-clickable) {
run set code;
} Else if (this checkbox is clickable) {
run set code;
} Else {
.end();
}
这是我做的样本测试。
' Uninstall Missions Module ' : function(uninstallModule) {
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall')
.setValue('#edit-text', "Missions")
.pause(800);
uninstallModule.expect.element('#edit-uninstall-missions').to.be.present;
uninstallModule.waitForElementVisible('//*[@id="system-modules-uninstall"]/table/tbody/tr[31]/td[3]/div/div/ul/li/a', 1000, false);
if (uninstallModule.expect.element('#edit-uninstall-missions').to.not.be.enabled) {
uninstallModule.expect.element('body').text.to.contain('Remove mission entities')
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall/entity/mission')
.verify.urlEquals('http://drupal8.develop:8091/admin/modules/uninstall/entity/mission');
uninstallModule.expect.element('body').text.to.contain('Are you sure you want to delete all mission entities?');
uninstallModule.click('xpath', '//*[@id="edit-submit"]');
uninstallModule
.pause(10000)
.verify.visible("body > div.layout-container > main > div.region.region-highlighted > div > h2", "All mission entities have been deleted.");
} else if (uninstallModule.expect.element('#edit-uninstall-missions').to.be.enabled) {
uninstallModule
.url('http://drupal8.develop:8091/admin/modules/uninstall')
.setValue('#edit-text', "Missions");
uninstallModule.click('#edit-uninstall-missions');
uninstallModule.pause(800);
uninstallModule.verify.urlEquals("http://drupal8.develop:8091/admin/modules/uninstall/confirm");
uninstallModule.click('xpath', '//*[@id="edit-submit"]');
uninstallModule.pause(1000);
uninstallModule.verify.visible('body > div.layout-container > main > div.region.region-highlighted > div.messages.messages--status', "The selected modules have been uninstalled.");
} else {
uninstallModule.end();
}
},
}
关于 nightwatch(和其他端到端测试框架)有两点需要了解
- 所有操作都是异步的。即使代码可以通过框架看起来是同步的,但最终,一切都是异步的。 读取值 也需要异步代码。
- 使用期望值时,如果期望值未被验证,代码会抛出错误;你不能用它们来读取值。
有了nightwatch,你可以使用getAttribute来读取你需要的值:
client.getAttribute('#edit-uninstall-missions', 'enabled', result => {
// I'm not sure about the type returned in result.value
// you can test it and adjust
const enabled = result && result.value !== "false"
&& result.value !== false;
if (enabled){
// Continue your test here
} else {
// Another test here
}
});
这是我所做的。
uninstallModule.getAttribute('#edit-uninstall-missions', 'disabled', function(results) {
console.log(results.value);
if (results.value == "true") {
console.log("It's true bro");
} else if (results.value != "true") {
console.log ("It's null");
} else {
console.log("It's Neither");
}
});