如何在非angularjs网站上使用量angular器?

我find了用于AngularJS Web应用程序的量angular器框架。

我怎样才能在没有使用AngularJS的网站上使用量angular器?

我写了我的第一个testing和Protractor触发此消息: Error: Angular could not be found on the page https://www.stratexapp.com/ : retries looking for angular exceeded

如果您的testing需要与非angular度页面进行交互,请使用browser.driver直接访问webdriver实例。

量angular器文档示例

 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(); 

另一种方法是 browser.get(…) 之前设置browser.ignoreSynchronization = true 。 量angular器不会等待Angular加载,你可以使用通常的元素(…)语法。

 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(); 

而不是量angular器,你可以使用e2etestingTestcafe 。
优点:

  • ES2016语法
  • 不需要额外的依赖,configuration和浏览器插件
  • 灵活的select器
  • 设置简单

要在非angular度站点上testing,应该删除同步。 为此使用以下内容:

 browser.ignoreSynchronisation = true; browser.get('url'); 

现在应该使用waitForAngular而不是弃用的ignoreSynchronization属性。

下面的waitForAngular指导是从量angular器文档中获取超时:

如何禁用等待Angular

如果您需要导航到不使用Angular的页面,可以通过设置browser.waitForAngularEnabled(false)closures等待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'); 

就个人而言,我没有得到任何成功的解决scheme,因为DOM元素没有及时正确加载。

我尝试了很多方法来处理asynchronous行为,包括browser.isElementPresent的browser.wait,但没有一个让人满意。

使用Protractor从onPrepare中的方法返回Promises的窍门是什么:

 onPrepare: () => { browser.manage().window().maximize(); browser.waitForAngularEnabled(true).then(function () { return browser.driver.get(baseUrl + '/auth/'); }).then(function () { return browser.driver.findElement(by.name('login')).sendKeys('login'); }).then(function () { return browser.driver.findElement(by.name('password')).sendKeys('password'); }).then(function () { return browser.driver.findElement(by.name('submit')).click(); }).then(function () { return true; }); return browser.driver.wait(function () { return browser.driver.getCurrentUrl().then(function (url) { return /application/.test(url); }); }, 10000); }, 

我受到了https://github.com/angular/protractor/blob/master/spec/withLoginConf.js的启发;