Protractor :版本 1.8.0
browser.wait(EC.presenceOf(element), 3000);
3秒究竟代表什么?当 3 秒过去并且找不到元素时是否会抛出错误?还是继续测试?
我用以下方法进行了测试:
element(by.id('#input')).sendKeys('foo');
browser.wait(EC.presenceOf(element(by.xpath(BAD-LOCATOR)), 3000));
element(by.id('#input')).sendKeys('bar');
BAD-LOCATOR 只是一个引用不存在的元素的 xpath。但是在评估这条线时,测试会等待超过这个时间,直到它达到 jasmine defaultTimeoutInterval 超时(我设置为 25 秒)。既然 promise 没有在 3 秒内得到解决,为什么它不会在 3 秒内失败?我期待 wait() 失败,并且第二个 sendKeys 命令在控制流中的下一个命令执行。
因此,上面的代码块将在文本框中打印“foo”,并在下一个命令中等到 jasmine 超时出错(错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。)。我预计在 3 秒内会出现错误。 'bar' 永远不会被打印出来。
最佳答案
这是超时,我的意思是在 3 秒后如果元素不存在直到现在它会超时。
对于您收到的 Jasmine 错误,我建议您添加回调
describe("long asynchronous specs", function() {
beforeEach(function(done) {
done();
}, 1000);
也可以引用Jasmine Asynchronous Support
关于 Protractor 在预期条件下的超时代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245473/