首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >量角器元素最终存在的期望

量角器元素最终存在的期望
EN

Stack Overflow用户
提问于 2016-05-10 13:07:49
回答 2查看 6.6K关注 0票数 4

是否有一种方法可以期望元素最终出现在页面上?例如一种方法

代码语言:javascript
复制
browser.wait(protractor.ExpectedConditions.presenceOf(element(by.partialLinkText('Continue'))), 1000, 'Unable to find continue link');

用期望错误而不是超时来失败?本质上是在下面一行中使用isEventuallyPresent()而不是isPresent()的一种方法

代码语言:javascript
复制
expect(element(by.partialLinkText('Continue')).isPresent()).toBe(true);

作为参考,我使用的是browser.ignoreSynchronization = true,尽管它是一个棱角的应用程序,并且使用茉莉花(至少目前是这样)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-11 10:18:44

利用事实

  • browser.wait返回一个承诺,一旦条件函数返回真实,这个承诺就会得到解决,如果超时,则返回拒绝。
  • 如果expect被传递给一个承诺,它只在承诺被解析时运行期望。

您可以创建一个函数来包装对browser.wait的调用

代码语言:javascript
复制
function eventual(expectedCondition) {
  return browser.wait(expectedCondition, 2000).then(function() {
    return true;
  }, function() {
    return false;
  });
}

然后创造一个期望

代码语言:javascript
复制
expect(eventual(protractor.ExpectedConditions.presenceOf(element(by.partialLinkText('Continue'))))).toBe(true);

或者,要使它在任何浏览器实例上工作,您可以对Protractor原型进行猴子补丁。

代码语言:javascript
复制
protractor.Protractor.prototype.eventual = function(expectedCondition) {
  return this.wait(expectedCondition, 2000).then(function() {
    return true;
  }, function() {
    return false;
  });
}

并可用作

代码语言:javascript
复制
expect(browser.eventual(protractor.ExpectedConditions.presenceOf(element(by.partialLinkText('Continue'))))).toBe(true);

为了避免超时,您必须确保传递给browser.wait的超时小于Jasmine异步测试超时,后者在量角器配置文件中被指定为jasmineNodeOpts: {defaultTimeoutInterval: timeout_in_millis}

票数 5
EN

Stack Overflow用户

发布于 2016-05-11 04:06:45

presenceOf一起使用的browser.wait()预期条件允许在测试中有一行:

代码语言:javascript
复制
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(element(by.partialLinkText('Continue'))), 1000, 'Unable to find continue link');

其中ECprotractor.ExpectedConditions -我通常通过global命名空间在onPrepare()中使用把它变成全球性的

请注意,如果发生故障,则会出现超时错误,但需要使用Unable to find continue link错误描述。

顺便提一句,提供有意义的自定义错误描述非常重要,就像您已经做过的那样。如果要强制执行,则有一个插件 to ESLint静态代码分析工具,如果存在没有显式错误描述文本的browser.wait(),则为会警告你

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37139499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档