如何在非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的启发;