<div>
<label localize="{data: 'Name', suffix: ':'}">Name:</label>
<span class="required" ng-class="{'disabled': meterCreating}" input-control="{title: 'Meter', okCallback:setMeterName, value: meter.meterName, ss: 'meters'}">
<span hs-placeholder="Enter Name" class="ng-binding"></span>
</span>
</div>
查找元素的最佳方法是:placeholder =“输入名称”?
场景:使用上面的代码段
查找元素用户点击“输入姓名”框,弹出另一个用于输入姓名的窗口。
答案 0 :(得分:3)
基于HTML,我能看到的最简洁的方法是通过css链接:
element(by.css('span.required span.ng-binding'))
(通常只是span.ng-binding
,但我非常怀疑这是唯一的。我也怀疑span.required span.ng-binding
是独一无二的。
还有很多其他选择,但是它们不会很好,因为它们会是类似的链条。
element(by.cssContainingText('label', 'Name:')).element(by.css('span > span'))
;
或
element(by.css('div label span.ng-binding'))
等。
我建议您向开发人员寻求更好的定位器(特别是ID&#39; s),这样可以更轻松地使用JavaScript。不幸的是,我不认为您能够通过HTML属性找到该元素,这是我最喜欢的方式之一。它看起来像这样:
element(by.css('span[placeholder=Enter Name]'))
- 但我非常确定会为无效的定位器引发错误。它接受大多数&#34;标准&#34; html属性,例如value
,option
,style
等...