什么是量角器中的browser.ignoreSynchronization?

什么是量角器中的browser.ignoreSynchronization?,第1张

什么是量角器中的browser.ignoreSynchronization?

一个简单的答案是,它使量角器不必等待Angular承诺,例如来自

$http
$timeout
解决的Angular承诺,如果您在
$http
或期间
$timeout
(例如,“正在加载”消息)测试行为或测试非Angular承诺,角度站点或页面,例如单独的登录页面。

例如,要测试在请求期间设置加载消息的按钮,可以

true
在获取元素时将其设置为+检查其内容

element(by.css('button[type="submit"]')).click();browser.ignoreSynchronization = true;expect(element(by.css('.message')).getText().toBe('Loading...');    browser.ignoreSynchronization = false;expect(element(by.css('.message')).getText().toBe('Loaded');

一个更复杂的答案是将其设置为

true
意味着对控制流的后续添加/注入也不会添加
browser.waitForAngular
。在某些情况下,了解控制流以及何时/如何添加/注入控制流很重要。例如,如果您要
browser.wait
测试多阶段流程,则将测试中的其余功能添加到
wait
控制流
之后 ,将传递给的功能注入到控制流中。

element(by.css('button[type="submit"]')).click();browser.ignoreSynchronization = true;expect(element(by.css('.message')).getText().toBe('Stage 1');browser.wait(function () {   // This function is added to the control flow after the final   // browser.ignoreSynchronization = false in the test   // so we need to set it again here    browser.ignoreSynchronization = true;   return element(by.cssContainingText('.message', 'Stage 2')).isPresent().then(function(isPresent) {      // Cleanup so later tests have the default value of false     browser.ignoreSynchronization = false;     return !isPresent;   });});expect(element(by.css('.message')).getText().toBe('Stage 2');browser.ignoreSynchronization = false;expect(element(by.css('.message')).getText().toBe('Stage 3');

另一种使用方法

browser.ignoreSynchronization
是直接访问标准的webdriver API

element(by.css('button[type="submit"]')).click();expect(browser.driver.findElement(by.css('.message')).getText().toBe('Loading...');    expect(element(by.css('.message')).getText().toBe('Loaded');

直接使用驱动程序方法来查找元素意味着系统将尝试查找它们而无需等待任何正在进行的

$http
请求完成,就像设置
browser.ignoreSynchronization= true



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5566462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存