我正在使用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>
尝试“获得”占位符和课程,但没有成功。请有人建议前进的方向吗? 谢谢 大卫
答案 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));