量角器中的元素,其中ID是变量

时间:2017-10-19 15:02:00

标签: angularjs protractor

我正在使用Protractor编写一些E2E测试。有一个文本框我真的很难...使用严格的xpath .//*[@id='_euj7snvsk']不会工作,因为''中的文本会改变每个运行时。

这是周围的条目:

<div class="kf-input" _ngcontent-c17="">
<!---->
<input id="_9b5w9rlmb" class="input kf-input-valid ng-dirty ng-valid ng-touched" _ngcontent-c17="" tabindex="0" placeholder="e.g. My living room project" required="" pattern="^[ A-Za-z0-9']{3,40}$" type="text"/>
<!---->
<!---->
<!---->
</div>

尝试“获得”占位符和课程,但没有成功。请有人建议前进的方向吗? 谢谢 大卫

2 个答案:

答案 0 :(得分:0)

您是否尝试通过CSS选择器获取元素? Check out all possibilities here

这是我对你案件的建议:

element(by.css('div.kf-input div.input.kf-input-valid')).sendKeys('Some Text');

或更短:

$('div.kf-input div.input.kf-input-valid').sendKeys('Some Text');

请注意,sendKeys()假设您要输入文字。从您的问题中不清楚,您想对该领域做些什么。

用于标识文本框的第二个类.kf-input-valid可能没有必要和/或可能会从您的代码中更改。因此,如果您不需要第二个类来唯一标识您的文本框,请不要使用它。

一般情况下,我建议使用CSS-Locators而不是XPath。从长远来看,XPath的性能较差,难以维护。

答案 1 :(得分:0)

试试这个:

//assign the variable id name in a string and use it in the locator
var idString = '_9b5w9rlmb';
var inputElement = element(by.id(idString));