如果我有这样的HTML:
<body>
<div id="menu">
<div id="button"> {{ someBinding }} </div>
</div>
</body>
我在量角器中有这样的声明:
ptor.findElement(By.xpath("/body/div[@id='menu']/div[@id='button']"));
我将使用什么来获取 {{someBinding}} 的值?似乎量角器试图将值与绑定名称进行比较。因此,如果我希望 {{someBinding}} 说出“Hello World”,则会抛出错误说
Expected: {{someBinding}} to equal 'Hello World'
答案 0 :(得分:7)
我认为你需要在元素上调用.getText()。
el = ptor.findElement(By.xpath("/body/div[@id='menu']/div[@id='button']"))
所以你的整个陈述将是:
expect(el.getText()).toBe('Hello World');
我还会考虑使用不同的定位器,例如CSS定位器(如果使用id),或者查看绑定定位器。
https://github.com/angular/protractor/blob/master/docs/api.md#webdriverwebelementprototypegettext https://github.com/angular/protractor/blob/master/docs/api.md#protractorbyprototypebinding
答案 1 :(得分:2)
如果有其他人在寻找它,我找到了解决方案。添加到@ rjferguson21的答案,期望行应如下所示:
expect(el.evaluate("someBinding")).toBe("Hello World");
我认为这是Protractor的更新。
答案 2 :(得分:2)
请注意,您不必为此使用xpath选择。试试binding定位器:
var el = element(By.binding('someBinding'));
expect(el.getText()).toBe('Hello World');