如果可能的话,我想写IF ELSE声明DRYer
Protractor - I want to write IF ELSE statement DRYer, if possible
我能D.R.Y这个代码吗?如果id invite-user
标签显示在用户的简档中,则用户可以点击以请求玩游戏ELSE,则将选择新的随机用户,直到id invite-user
显示在用户简档中为止。
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
browser.sleep(sleep);
element(by.id('invite-user')).isDisplayed().then(function(clickUser) {
if (clickUser) {
element(by.id('invite-user')).click();
element(by.id('role')).sendKeys('Player');
button.click();
browser.sleep(sleep);
expect(element(by.id('pending-admin-approval')).first().isDisplayed()).toBe(true);
} else {
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
browser.sleep(sleep);
element(by.id('invite-user')).click();
element(by.id('role')).sendKeys('Player');
button.click();
browser.sleep(sleep);
expect(element(by.id('pending-admin-approval')).first().isDisplayed()).toBe(true);
});
}
});
});
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
browser.sleep(sleep);
element(by.id('invite-user')).isDisplayed().then(function(clickUser) {
if (clickUser) {
inviteUser();
} else {
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
browser.sleep(sleep);
inviteUser();
});
}
});
function inviteUser(){
element(by.id('invite-user')).click();
element(by.id('role')).sendKeys('Player');
button.click();
browser.sleep(sleep);
expect(element(by.id('pending-admin-approval')).first().isDisplayed()).toBe(true);
}
});
更优化的方法:
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
waitForApi();
element(by.id('invite-user')).isDisplayed().then(function(clickUser) {
if (clickUser) {
inviteUser();
return; // Don't go further
}
browser.get("/index").then(function() {
element.all(by.css('game-player')).get(randomUser).click();
waitForApi();
inviteUser();
});
});
function inviteUser(){
element(by.id('invite-user')).click();
element(by.id('role')).sendKeys('Player');
button.click();
waitForApi();
expect(element(by.id('pending-admin-approval')).first().isDisplayed()).toBe(true);
}
需要这个功能:例如,如果我们在browser.sleep中设置2000(即2秒),那么会有两种情况:1。API花费的时间超过2秒,那么测试用例将失败2。API花费的时间少于2秒,因此我们不得不不必要地等待。因此,为了克服这个问题,我建议当API成功执行时,对我们显示/隐藏的元素进行检查
function waitForApi(){
let EC = protractor.ExpectedConditions;
// Waits for the api loader to be no longer visible
browser.wait(EC.invisibilityOf(element(by.css('#test > .loader'))), 10000); // TODO : Change the condition as per visibility/invisibilty of element in your project
}
});
相关文章:
- 如何在ReactJS JSX中执行嵌套的if-else语句
- Javascript Return and if/else
- JavaScript if-else 速记错误
- 如何检查if/else语句中的随机条件
- 在javascript中创建数组,而不是if.else
- Javascript If else 只返回 TRUE 或只返回 FALSE
- jquery if else不返回警报消息
- 在Javascript中为if/else语句添加OR
- If Else Java Script HTML
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- 我应该如何应用if-else条件来向具有不同用户角色的人显示不同的菜单
- geoTest函数-创建if/else语句
- JavaScript中的温度转换器(IF ELSE条件)
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- 编写if-else语句的更好方法
- 在if/else语句中显示DIV
- PHP If Else-隐藏按钮
- JavaScript if/else未按预期操作
- if/else运算符未更改
- 名称不能以''jquery-if-else条件中的字符