Selenium 我可以从代码中选择什么,而不是xpath
对于上述代码Selenium 我可以从代码中选择什么,而不是xpath,selenium,selenium-webdriver,protractor,Selenium,Selenium Webdriver,Protractor,对于上述代码 <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={}--><!--t
<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.)我可以通过type=“text”使用CSS,但是在页面上有更多使用该type=“text”的元素。因此,这也不起作用
3) 我正在使用chrome检查元素。在这种情况下,如果我可以选择XPath,它将带有id
4) 我不想使用绝对XPath
6) 有人可以为我提供这个问题的解决方案。使用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');
});
请尝试以下代码:
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');
试试这个:
var elmDiv = element.all(by.cssContainingText('div', 'First name')).last();
var elmInput = elmDiv.element(by.css('[id^="md"]'))
使用xpath:
//label[text()='First Name']//前面的同级::input
,或者您可以尝试使用label的for属性作为get Id的其他方法。并使用该id。您问题的答案取决于您希望对选择做什么?单击或双击或getText()?我想在文本字段中传递值,为此,我需要定位器,但不想使用Xpath。当我使用id执行此操作时,它会将错误显示为NoElement one。那么,我现在应该使用什么?尝试了这两种方法。我可以对第一个字段“first name”使用这种方法,但对last name字段也有相同的类。因此,它将显示错误,指出找到了多个元素。请尝试以下操作:。或者,如果需要每个元素,您可以循环遍历所有元素。那么对于第二个字段,我将做什么。@Anjalishing您是否尝试过使用我在编辑中添加的代码?嘿,这将仅适用于第一个字段,而不适用于其他字段。我在查询中提到,页面中有许多元素具有此类名。将错误显示为失败:输入必须是字符串getAttribute
返回承诺。上面的代码不会按照编写的方式工作,嘿,非常感谢,它在我的所有字段中都工作得很好。因此,我只想知道这背后的逻辑。使用elmInput.click(),我可以单击元素,现在它不会显示错误,因为“此定位器存在多个元素”。你能告诉我你是如何使用last的逻辑吗?因为据我所知,它是关于last的,它将检索最后一个元素。嗨@Anjalishing,我们试图从你的html中获取所有包含文本名字的div
,最后一个div
包含input
元素。因为我们现在知道,input
元素位于div
中。我们能够很容易地找到它。:)