gpt4 book ai didi

javascript - 在循环内使用条件

转载 作者:行者123 更新时间:2023-11-29 19:02:39 24 4
gpt4 key购买 nike

我是 javascript 和 nightwatch js 的新手。

我正在尝试使在线测试自动化,该测试最多包含 4 到 5 个随机生成的问题。每个问题都会加载一个新的页面,所以基本上你回答一个问题,提交它,然后得到下一个问题。

答案可以有不同的类型,有些是是/否按钮,有些是您单击的多项选择,有些是在文本字段中输入数据,然后您必须按 Enter 键提交键盘上的键。幸运的是,用于这些类型答案中的每一个的定位器总是相同的(不是动态生成的)。例如。是/否问题,是的答案将始终是 .answerYes,或者如果它是文本字段,则将始终是#answerBox。

我需要完成 4 或 5 个问题,我是否回答正确并不重要。

我正在考虑使用 for 循环来检查我是否获得了我已经确定的这些元素之一,如果是,我将执行操作并继续到下一页,直到调查问卷完成。

我的想法类似于下面的示例。我认为这行不通,因为 javascript 是异步的——我还不完全理解这一点。

for (i = 0; i < 10; i++) { 

if (client.waitForElementVisible('.element1',1000)) {

client.click('.element1'); //This would select first answer
client.click('nextButton'); //This would continue to the next question

}
else if (client.waitForElementVisible('.element2',1000)) {

client.click('.element2'); //This would select first answer
client.click('nextButton'); //This would continue to the next question

}
else if (client.waitForElementVisible('.element3',1000)) {

client.click('.element3'); //This would select first answer
client.click('nextButton'); //This would continue to the next question

}
else if (client.waitForElementVisible('.element4',1000)) {

client.click('.element4'); //This would select first answer
client.click('nextButton'); //This would continue to the next question
}
else if (client.waitForElementVisible('.element5',1000)) { //element 5 would be the confirmation that test is over

client.click('.element5'); //this would click the OK button when notified test is done
leaveTheLoop(); //Not sure what would be the command to leave the loop
}
}

我也在查看 JavaScript 的 Switch 语句,但我不认为我可以在表达式中写一些东西来验证我期望的任何元素是否都出现在一个表达式下。

最佳答案

你可以继续链接.waitForElementVisible(selector,timeout,abortOnFailure,callback) 检查元素是否可见。

通过将 abortOnFailure 设置为 false 这样整个测试就不会失败,即使 element1 不可见,您也可以继续测试 element2,3,4,5。

代码如下:

test(client){
client.waitForElementVisible('.element1',1000,false,function(){
client.click('.element1'); //This would select the first answer
.click('nextButton');
})
.waitForElementVisible('.element2',1000,false,function(){
client.click('.element2'); //This would select the second answer
.click('nextButton');
})
.waitForElementVisible('.element3',1000,false,function(){
client.click('.element3'); //This would select the third answer
.click('nextButton');
})
.waitForElementVisible('.element4',1000,false,function(){
client.click('.element4'); //This would select the forth answer
.click('nextButton');
})
.waitForElementVisible('.element5',1000,false,function(){
client.click('.element5'); //This would select the fifth answer
})
}

详细解释: http://nightwatchjs.org/api/#waitForElementVisible

用法:

do{
test(client);
client.click('submit_or_whatevertothenextpage');
}while (client.except.to.not.be.visible(".result_element_non_existing"));

关于javascript - 在循环内使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com