量角器忽略同步问题
Protractor ignoreSynchronization issue
我正在为我的一个应用程序开发端到端测试套件。我们有一个非 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 有关,但不确定我做错了什么?
您没有看到 count()
函数 returns 在执行后作为回调的承诺。 Protractor 建立在 WebDriverJs 的异步承诺模型之上。它与您的 ignoreSynchronization
无关,您正在控制台记录一个量角器实例对象而不是它的值。您需要控制台记录通过承诺返回的值。方法如下 -
var books= element.all(by.repeater('book in books'));
books.count().then(function(booksCount){
console.log(booksCount);
});
在上面的代码中使用 .then()
的上述方法应该可以解决您的问题。 More about promises。希望对你有帮助。
我正在为我的一个应用程序开发端到端测试套件。我们有一个非 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 有关,但不确定我做错了什么?
您没有看到 count()
函数 returns 在执行后作为回调的承诺。 Protractor 建立在 WebDriverJs 的异步承诺模型之上。它与您的 ignoreSynchronization
无关,您正在控制台记录一个量角器实例对象而不是它的值。您需要控制台记录通过承诺返回的值。方法如下 -
var books= element.all(by.repeater('book in books'));
books.count().then(function(booksCount){
console.log(booksCount);
});
在上面的代码中使用 .then()
的上述方法应该可以解决您的问题。 More about promises。希望对你有帮助。