对于上述代码
<div class="md-input-infix">
<!--template bindings={}-->
<input class="md-input-element ng-pristine ng-valid ng-touched" id="md-input-19-input" spellcheck="false" type="text">
<!--template bindings={}--><!--template bindings={}-->
<label class="md-input-placeholder md-empty md-float" for="md-input-19-input">First name *
<!--template bindings={}-->
</label>
</div>
1.)在此代码中,id每次都会更改。因此,我将无法选择id作为定位器
2.)我可以通过类型=&#34; text&#34;来使用CSS,但是在页面上还有更多元素,这个类型=&#34; text&#34;。所以,这也不会工作
3)我正在研究chrome来检查元素。在这种情况下,如果我可以选择XPath,它将会带有id。
4)我不想使用绝对XPath。
6)有人可以为我解决这个问题。
答案 0 :(得分:1)
试试这个:
var elmDiv = element.all(by.cssContainingText('div', 'First name')).last();
var elmInput = elmDiv.element(by.css('[id^="md"]'))
答案 1 :(得分:0)
如何使用CSS选择器?
input[class="md-input-element ng-pristine ng-valid ng-touched"]
或者您可以尝试首先找到父元素:
div[class="md-input-infix"]
然后在其后代中搜索。
尝试看看这是否有帮助:
element.all(by.css('input[class="md-input-element ng-pristine ng-valid ng-touched"]')).each(function(element) {
element.sendKeys('blah blah');
});
答案 2 :(得分:0)
尝试以下代码:
var el = element(by.css("label:contains('Low Touch Client Name')"));
var elementID = el.getAttribute('id');
var inputBox = element(by.id(elementID));
inputBox .sendKeys('my text');