好的,我有一个角度应用程序,其中有指令和一些其他正常的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: {}
无法理解根本原因。有人可以帮忙吗?
答案 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的量角器有关)