【问题标题】:Protractor not able to sync with page量角器无法与页面同步
【发布时间】:2014-01-23 15:49:29
【问题描述】:

我正在尝试进行基本的量角器测试(使用 Jasmine)。 Protractor 已安装,selenium 正在运行,并且 Protractor 文档中的示例正在运行。

但是,当我将测试网站的内容(angularjs.org 上的“The Basics”示例)复制到 jsfiddle (http://jsfiddle.net/yfUQ8/2/) 时,测试错误:

Error: Error while waiting for Protractor to sync with the page: {}

我的测试如下所示:

describe('angularjs homepage', function() {
  it('should greet the named user', function() {
    browser.get('http://fiddle.jshell.net/yfUQ8/2/show/'); // fails
    // browser.get('http://www.angularjs.org/'); // works

    element(by.model('yourName')).sendKeys('Julie');
    var greeting = element(by.binding('yourName'));
    expect(greeting.getText()).toEqual('Hello Julie!');
  });
});

当手动查看小提琴时,一切似乎都工作正常。 Angular 使用 ng-app 引导,测试在 3 秒内运行(所以它似乎没有超时)。

【问题讨论】:

    标签: angularjs selenium-webdriver jasmine protractor


    【解决方案1】:

    Protractor 需要找到与 ngapp 同步的元素。默认值为“正文”。在你的 jsfiddle 中,我看到了:

    <body>
      <div ng-app>
    

    如果你设置了 rootEl 属性,你的 jsfiddle 应该可以工作。

    describe('angularjs homepage', function() {
      it('should greet the named user', function() {
        browser.get('http://fiddle.jshell.net/yfUQ8/2/show/');
        browser.rootEl = 'div';
    
        element(by.model('yourName')).sendKeys('Julie');
        var greeting = element(by.binding('yourName'));
        expect(greeting.getText()).toEqual('Hello Julie!');
      });
    });
    

    【讨论】:

    • 太棒了,正是我要找的东西 :) 我在文档中找不到这个。
    • 感谢您的回答。但由于某种原因,将browser.rootEl 设置为“div”对我不起作用。但是当我将 ng-app 移动到身体时,它就完成了这项工作。
    • 'div' 对我也不起作用。将 ng-app 移动到 body 标签对我有用。
    猜你喜欢
    • 2014-05-16
    • 2018-12-07
    • 2015-10-05
    • 2019-08-16
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2019-10-03
    • 2016-04-26
    相关资源
    最近更新 更多