如何在没有ng-bind和ng-model的情况下检查范围内的变量?
<span ng-if="user.code === 'YELLOW'">
<span class="glyphicons glyphicons-circle-remove text-danger"></span> Yellow
</span>
<span ng-if="user.code === 'GREEN'">
<span class="glyphicons glyphicons-circle-exclamation-mark text-warning"></span> Green
</span>
我想检查带有量角器的user.code
使用ng-bind和ng-model它不起作用
browser.expect(element(by.binding('user.code')).getText()).to.eventually.equal('');
或
browser.expect(element(by.model('user.code')).getAttribute('value')).to.eventually.equal('');
错误:
NoSuchElementError: No element found using locator: by.binding("user.code")
NoSuchElementError: No element found using locator: by.model("user.code")
答案 0 :(得分:2)
你不应该在量角器中测试那种东西。您应该从用户的角度编写测试。
但是,如果要测试使用evaluate
。获取对DOM元素的引用,然后调用evaluate:
// Choose a DOM element bound to a scope that contains the value you
// want to test
expect($('span').evaluate('user.code')).toBe('some value');
http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.evaluate
答案 1 :(得分:1)
如果您可以通过CSS选择器找到您的元素。
$('.glyphicons-circle-remove').isPresent(); // For user.code == 'YELLOW'
$('.glyphicons-circle-exclamation-mark').isPresent(); // For user.code == 'GREEN'
仅限工作如果您使用ng-if
$('[ng-if="user.code === \'YELLOW\'"]').isPresent(); // For user.code == 'YELLOW'
$('[ng-if="user.code === \'GREEN\'"]').isPresent(); // For user.code == 'GREEN'
因为元素仅在ng-if
的条件满足时才出现。所以你也可以这样做。
注意强>:
.isPresent()
因为ng-if
会从DOM中删除该元素。
如果您使用ng-show
,则需要使用.isDisplayed()
代替(这不适用于第二种解决方案)。