如何在non angularjs网站上使用量角器?

Abd*_*rim 78 javascript asp.net testing protractor

我找到了为AngularJS Web应用程序制作的Protractor框架.

如何在不使用AngularJS的网站上使用Protractor?

我写了第一个测试,Protractor触发了这条消息:

Error: Angular could not be found on the page https://www.stratexapp.com/ : retries looking for angular exceeded
Run Code Online (Sandbox Code Playgroud)

And*_*nyi 125

另一种方法是browser.ignoreSynchronization = true browser.get(...)之前设置.量角器不会等待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();
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这种方法来保持整个测试套件的代码一致. (5认同)
  • 在非角度处理量角器时,这绝对是最好的方法.这里有一篇[博客文章](http://ng-learn.org/2014/02/Protractor_Testing_With_Angular_And_Non_Angular_Sites/),它解释了更多内容.对于那些搜索E2E的人来说,还有[nightwatch.js](http://nightwatchjs.org/),[实习生](http://theintern.io/),[casperjs](http://casperjs.org/ ),[webdriver](http://webdriver.io/) (4认同)

Eit*_*eer 73

如果您的测试需要与非角度页面交互,请直接访问webdriver实例browser.driver.

Protractor docs的示例

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();
Run Code Online (Sandbox Code Playgroud)

  • @Val - global.by = global.By = protractor.By; (来源 - https://github.com/angular/protractor/commit/e7d9e081cdc7fcf100e0346b1dcf0f7fdad7d889) (7认同)
  • 只是一个愚蠢的问题,`by.id`改为`By.id`? (2认同)

Mat*_*sGB 13

现在应该使用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');
Run Code Online (Sandbox Code Playgroud)