2017-10-19 72 views
0

我正在使用量角器编写一些E2E测试。有一个文本框我真的很难得到......使用严格的xpath .//*[@id='_euj7snvsk']将无法​​正常工作,因为“内部”文本会更改每个运行时间。量角器中ID为变量的元素

这里的周边条目:

<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

是什么在这里通过其ID的值更改请在这里发表至少3种不同的改变ID的模式? –

回答

0

试试这个:

//assign the variable id name in a string and use it in the locator 
var idString = '_9b5w9rlmb'; 
var inputElement = element(by.id(idString)); 
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表现不佳,难以维护。

+0

谢谢恩斯特 - 是的,你说得很对 - 我确实需要发送一些文字。 –

+0

@David Redmayne。很高兴我预测正确。我的建议是否可以使用CSS选择器? –

+0

@DavidRedmayne如果答案对您有用,请将其标记为正确。如果它不起作用,请告诉我如何改进它。 –