【问题标题】:Protractor ignoreSynchronization issue量角器忽略同步问题
【发布时间】:2015-09-29 23:15:33
【问题描述】:

我正在为我的一个应用程序开发 e2e 测试套件。我们有一个非 Angular 站点的 sso,我们的站点是 Angular 站点。在我的测试开始时,我调用了 SSO 设置:

 browser.ignoreSynchronization = true;        
 browser.get(browser.baseUrl + '/agoda/home?mock=mock-jax);

我能够成功登录,它会重定向到我的应用程序,这是一个 Angular 站点。我设置 browser.ignoreSynchronization = false;一旦我重定向到我的应用程序并加载它。在此之后没有任何效果。

我尝试阅读以下内容:

var books= element.all(by.repeater('book in books'));
console.log(licenses.count());

结果

{ ptor_:
   { controlFlow: [Function],
     schedule: [Function],
     setFileDetector: [Function],
     getSession: [Function],
     getCapabilities: [Function],
     quit: [Function],
     actions: [Function],
     touchActions: [Function],
     executeScript: [Function],
     executeAsyncScript: [Function],
     call: [Function],
     wait: [Function],
     sleep: [Function],
     getWindowHandle: [Function],
     getAllWindowHandles: [Function],
     getPageSource: [Function],
     close: [Function],
     getCurrentUrl: [Function],
     getTitle: [Function],
     findElementInternal_: [Function],
     findDomElement_: [Function],
     findElementsInternal_: [Function],
     takeScreenshot: [Function],
..
}

我相信这与 ignoreSynchronization 有关,但不确定我做错了什么?

【问题讨论】:

  • 请阅读console.log(licenses.count());作为 console.log(books.count());

标签: protractor angularjs-e2e e2e-testing


【解决方案1】:

您没有得到count() 函数在执行后作为回调返回的承诺。 Protractor 是建立在 WebDriverJs 的 async with promises 模型之上的。它与您的 ignoreSynchronization 无关,您正在控制台记录量角器实例对象而不是其值。您需要控制台记录通过承诺返回的值。方法如下 -

var books= element.all(by.repeater('book in books'));
books.count().then(function(booksCount){
    console.log(booksCount);
});

上述代码中使用.then() 的方式应该可以解决您的问题。 More about promises。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多