量角器:等待量角器与页面同步时出错:{}

时间:2014-04-04 11:02:38

标签: angularjs protractor

好的,我有一个角度应用程序,其中有指令和一些其他正常的html元素。 这个指令很有意思,因为它使用RaphaelJs来创建自定义图形。该指令还使用require js来加载依赖(如raphel.js)。每件事情都很好:)

现在困难的部分。我想写一些E2E测试用例。我想选择由directive创建的svg元素并检查一些属性值。

所以在浏览器(Chrome)控制台中输入$('tspan'),我看到简单的css选择器返回了许多tspans元素。

示例tspan

<tspan dy="7" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Somevalue</tspan>

当我在E2E表中编写相同的查询时

 var svgElement = $('tspan')[0];
 console.log(svgElement);

记录以下内容:

{ click: [Function],
  sendKeys: [Function],
  getTagName: [Function],
  getCssValue: [Function],
  getAttribute: [Function],
  getText: [Function],
  getSize: [Function],
  getLocation: [Function],
  isEnabled: [Function],
  isSelected: [Function],
  submit: [Function],
  clear: [Function],
  isDisplayed: [Function],
  getOuterHtml: [Function],
  getInnerHtml: [Function],
  findElements: [Function],
  isElementPresent: [Function],
  evaluate: [Function],
  '$$': [Function],
  findElement: [Function],
  '$': [Function],
  find: [Function],
  isPresent: [Function] }

当我尝试在同一元素上访问getText方法时,我得到了

 var svgElement = $('tspan');
    console.log(svgElement.getText());

C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\seleniu
m-webdriver\lib\webdriver\promise.js:1549
      throw error;
            ^
Error while waiting for Protractor to sync with the page: {}

无法理解根本原因。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我刚刚学会了量角器和角度版本紧密耦合的困难方法。

使用角度1.2.16和量角器0.23.1导致了您的错误 - 似乎内部角度API已更改。 (量角器中的测试试图执行:

  angular.element(el).injector().get('$browser').notifyWhenNoOutstandingRequests(callback);

和injector()在1.2.16中的元素上不存在..因此我失败了)

在我的情况下,我正在测试更新到角度1.3-beta.10,这似乎会导致更加复杂的世界(至少与0.23.1的量角器有关)