我想识别名字列的第二个字段。如何唯一地识别第二个字段。我尝试了//*[@id="depDob($index)"][2]
,但没有希望。这里两个名字字段具有相同的属性,在下面。
注意:在这里,第二个名字是隐藏的。单击复选框选项后,我们将得到第二个名字字段
您能帮忙吗?
<div class="seg2_formBox">
<label for="depFirstName($index)" class="formly-field-label">First Name *
<input id="depFirstName($index)" aria-describedby="userDepfn($index)" type="text" maxlength="15" ng-model="user.firstName" class="formly-field-input ng-pristine ng-valid ng-empty ng-valid-maxlength ng-touched" tabindex="0" ng-blur="validateUser(user, 'firstName')" ng-trim="false">
</label>
<span class="mbs2_formError" id="userDepfn" aria-live="polite" ng-show="user.firstNameError">Please enter a valid value for First Name</span>
</div>
<div class="seg2_formBox">
<label for="depFirstName($index)" class="formly-field-label">First Name *
<input id="depFirstName($index)" aria-describedby="userDepfn($index)" type="text" maxlength="15" ng-model="user.firstName" class="formly-field-input ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength" tabindex="0" ng-blur="validateUser(user, 'firstName')" ng-trim="false">
</label>
<span class="mbs2_formError ng-hide" id="userDepfn" aria-live="polite" ng-show="user.firstNameError">Please enter a valid value for First Name</span>
</div>
答案 0 :(得分:2)
按索引选择元素(如果两个输入字段都不是同一父级的子级),而不是
//input[@id="depFirstName($index)"][2]
尝试
(//input[@id="depFirstName($index)"])[2]
答案 1 :(得分:0)
如果您的索引一直在变化-
rocker/verse
答案 2 :(得分:0)
您可以尝试在xpath中使用块类名称,然后等待其显示:
WebDriverWait inputField = new WebDriverWait(driver, 5);
inputField.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//div [@class='seg2_formBox']//input"))))
.sendKeys("some_to_input");
答案 3 :(得分:0)
根据 HTML ,您共享的两个带有属性 class =“ seg2_formBox” 的<div>
标签的含义不相同。要标识字符序列并将其发送到第二个 First 字段,您可以使用以下解决方案:
使用多个 class :
driver.findElement(By.xpath("//div[@class='seg2_formBox']//span[@class='mbs2_formError' and not(@class='ng-hide')]//preceding::label[1]")).sendKeys("Manoj Soundarrajan");
使用单个类:
driver.findElement(By.xpath("//div[@class='seg2_formBox']//span[@class='mbs2_formError']//preceding::label[1]")).sendKeys("Manoj Soundarrajan");
同样,所需元素似乎是Angular元素,因此您需要诱使 WebDriverWait 使所需元素可点击。