gpt4 book ai didi

angularjs - for 循环和 Protractor 中的 if 问题

转载 作者:行者123 更新时间:2023-12-02 22:27:05 24 4
gpt4 key购买 nike

我正在尝试对基于浏览器的应用程序进行端到端测试,该应用程序将操作发送到设备然后监视它。然后,网页从应用程序获取更新,但不会自动刷新。我的以下代码的目标是刷新浏览器以获取操作状态的更新,启动循环计数器,检查操作的状态,如果状态已修复 - 将该状态发送到控制台并退出循环,否则递增计数器并重复循环,直到计数器到期或返回固定或失败或锁定状态。另外,将最终操作状态发送到控制台。

代码如下:

    browser.sleep(30000);

browser.refresh();

for (var i = 0; i < 50; ++i) {

console.log('i is: ', i);

element(by.css('.deployment-card-status, result.status')).getText().then(function(text){

var action_status = text;

if (action_status == 'Fixed'){

console.log('Action Passed');

break();
}
else {
browser.sleep(30000);
browser.refresh();
}

if (action_status == 'Failed' || action_status == 'Blocked'){

console.log('Action Failed');
}
});
}

该网页是用 Angular js 编写的,我正在尝试使用 Protractor 和 Jasmine 框架对其进行测试。

问题是以下错误代码:

错误代码:100收到信号:无使用位于http://localhost:4444/wd/hub的selenium服务器[启动器] 运行 1 个 WebDriver 实例[启动器] 错误:语法错误:意外的标记

我不知道这个意外的 token 是什么?

最佳答案

首先,您不应该调用 break(),而应该使用 break;

不过,后续问题是 break 在这里不会产生任何影响,因为您实际上不在循环内(好吧,如果您从上到下阅读代码,是的,但我们在这里工作在异步环境中,并且此时位于 promise 解析函数内)。因此,您会收到 SyntaxError: Illegal break statements 错误。

解决该问题的一种方法是使用 done() 函数 - 类似于 jasmine 测试的“返回”:

it("should test something", function (done) {
browser.sleep(30000);

browser.refresh();

for (var i = 0; i < 50; ++i) {
console.log('i is: ', i);
element(by.css('.deployment-card-status, result.status')).getText().then(function(text){
var action_status = text;
if (action_status == 'Fixed'){
console.log('Action Passed');
done();
}
else {
browser.sleep(30000);
browser.refresh();
}

if (action_status == 'Failed' || action_status == 'Blocked'){
console.log('Action Failed');
}
});
}
});

关于angularjs - for 循环和 Protractor 中的 if 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647770/

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