我正在学习量角器,但是遇到“ Promise”错误的问题。我读过Mocha testing with promises: Error: Timeout of 2000ms exceeded和https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control-flow,但仍然停留在这个简单的代码中。
基本上,如果我添加一行 element(by.css(gotograb_css))。click();
会有错误 错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回了Promise,请确保它可以解决。
在此之后是否添加.then()?我试了一下,即使在脚本末尾使用了done(),错误仍然存在。
config.js中针对量角器的测试框架是mochai
背景 1.元素css是正确的,因为我可以在Selenium / Java中运行它。
it("testing site", (done)=> {
.......
done();
})
它也不起作用。同样的错误
var title_css = "h1[ng-bind='::$ctrl.primaryText']";
var gotograb_css = "a[ng-bind='::$ctrl.linkoutText']";
it("testing site", ()=> {
browser.get('https://www.eat24.com/');
let EC = protractor.ExpectedConditions; //
let title_element = element(by.css(title_css));
let condition = EC.presenceOf(title_element);
browser.wait(condition, 30000)
element(by.css(gotograb_css)).click(); //ERROR
})
答案 0 :(得分:0)
我认为问题在于browser.wait
函数没有得到解决。
试试这个:
let condition = EC.presenceOf(title_element);
return browser.wait(condition, 30000)
.then(function () {
return element(by.css(gotograb_css)).click();
});
答案 1 :(得分:0)
好像您在配置中将全局超时设置为2000
毫秒。
发生的事情是您尝试等待30秒,这显然比您的全局超时还要长。
所以只需打开配置,看看是否是这种情况
答案 2 :(得分:0)
如果您正在使用Mocha,则可能需要禁用超时,将类似的内容添加到配置文件中:
mochaOpts: {
enableTimeouts: false
},