Angularjs 量角器:等待量角器与页面同步时出错:{}
好的,我有一个angular应用程序,其中有指令和其他一些普通的html元素。 这个指令很有趣,因为它使用RaphaelJs创建自定义图形。该指令还使用requirejs加载依赖项(如raphel.js)。一切正常:) 现在是最难的部分。我想写一些E2E测试用例。我想选择由指令创建的svg元素,并检查一些属性值 因此,在浏览器(Chrome)控制台中,我键入$('tspan'),我看到许多tspans元素由简单的css选择器返回 样本tspanAngularjs 量角器:等待量角器与页面同步时出错:{},angularjs,protractor,Angularjs,Protractor,好的,我有一个angular应用程序,其中有指令和其他一些普通的html元素。 这个指令很有趣,因为它使用RaphaelJs创建自定义图形。该指令还使用requirejs加载依赖项(如raphel.js)。一切正常:) 现在是最难的部分。我想写一些E2E测试用例。我想选择由指令创建的svg元素,并检查一些属性值 因此,在浏览器(Chrome)控制台中,我键入$('tspan'),我看到许多tspans元素由简单的css选择器返回 样本tspan <tspan dy="7" style="-
<tspan dy="7" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Somevalue</tspan>
它记录了以下内容:
{ 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: {}
无法理解根本原因。有人能帮忙吗?我刚刚学到了量角器和测角器是紧密耦合的 使用angular 1.2.16和量角器0.23.1会导致错误-似乎内部angular API已更改。(量角器中的测试正在尝试执行:
angular.element(el).injector().get('$browser').notifyWhenNoOutstandingRequests(callback);
1.2.16中的元素上不存在injector()。因此我失败了)
在我的例子中,我正在测试升级到angular 1.3-beta.10,这似乎会导致一个更加协调的世界(至少与量角器0.23.1有关)如果这是一个问题,我想你会得到一个不同的错误,但我认为你可能需要格式化getText(),如下所示,因为它使用了承诺
var svgElement = $('tspan');
svgElement.getText().then(function (text){
console.log(text);
}
你的测试正在运行吗?我只有“等待量角器与页面同步时出错:{}”,因为ng应用程序不在body标记上,请参阅以获取解决方案。在运行第一个测试之前,请尝试添加“browser.ignoreSynchronization=true;”(或“ptor.ignoreSynchronization=true;”)。
var svgElement = $('tspan');
svgElement.getText().then(function (text){
console.log(text);
}