我找到了为 AngularJS Web 应用程序制作的 Protractor 框架。
如何在不使用 AngularJS 的网站上使用量角器?
我写了我的第一个测试,Protractor 触发了这条消息:
Error: Angular could not be found on the page https://www.stratexapp.com/ : retries looking for angular exceeded
我找到了为 AngularJS Web 应用程序制作的 Protractor 框架。
如何在不使用 AngularJS 的网站上使用量角器?
我写了我的第一个测试,Protractor 触发了这条消息:
Error: Angular could not be found on the page https://www.stratexapp.com/ : retries looking for angular exceeded
另一种方法是browser.ignoreSynchronization = true
在browser.get(...)之前设置。量角器不会等待 Angular 加载,您可以使用通常的 element(...) 语法。
browser.ignoreSynchronization = true;
browser.get('http://localhost:8000/login.html');
element(by.id('username')).sendKeys('Jane');
element(by.id('password')).sendKeys('1234');
element(by.id('clickme')).click();
如果您的测试需要与非角度页面交互,请直接使用browser.driver
.
量角器文档中的示例
browser.driver.get('http://localhost:8000/login.html');
browser.driver.findElement(by.id('username')).sendKeys('Jane');
browser.driver.findElement(by.id('password')).sendKeys('1234');
browser.driver.findElement(by.id('clickme')).click();
现在应该使用 waitForAngular 而不是弃用的 ignoreSynchronization 属性。
以下 waitForAngular 指南来自 Protractor 文档中的超时:
如何禁用等待 Angular
如果你需要导航到一个不使用 Angular 的页面,你可以通过设置 `browser.waitForAngularEnabled(false) 来关闭等待 Angular。例如:
browser.waitForAngularEnabled(false); browser.get('/non-angular-login-page.html'); element(by.id('username')).sendKeys('Jane'); element(by.id('password')).sendKeys('1234'); element(by.id('clickme')).click(); browser.waitForAngularEnabled(true); browser.get('/page-containing-angular.html');
要在非角度站点上进行测试,您应该删除同步。为此,请使用以下内容:
browser.ignoreSynchronisation = true;
browser.get('url');
忘记了ignoreSynchronization
!!!它不再存在于从量角器开始的量角器中5.3.0
browser.waitForAngularEnabled(false)
应该改用
量角器具有等待角度的内置处理,这就是它的不同之处。但是,如果页面不是有角度的页面,则量角器将挂起直到遇到超时错误,因此您需要禁用该功能以测试非角度页面。还有一个边缘情况,当页面有角度时,但这个功能仍然会使量角器出错。执行以下步骤,找出何时禁用量角器的等待角度
getAllAngularTestabilities()
如果输出是getAllAngularTestabilities is not defined
,那么你的页面没有角度,去最后一步禁用内置等待
getAllAngularTestabilities()[0]._ngZone.hasPendingMacrotasks
getAllAngularTestabilities()[0]._ngZone.hasPendingMicrotasks
如果其中任何一个返回true
(如果有未决的微任务或宏任务),则转到最后一步。如果都是false
,恭喜,您可以使用内置量角器的等待角度。但如果你不喜欢它,我也不喜欢,那么请阅读最后一步以了解如何禁用它
await
关键字await browser.waitForAngularEnabled(false)
此命令可以在任何地方运行:在it
块中、在beforeAll
中或在onPrepare
您的配置中。只要确保,如果你await
用来制作相应的块async
beforeAll(async () => await browser.waitForAngularEnabled(false))