Html代码:
<table id="tblusref" style="width: auto;" onmouseover="UsortBinders()" role="grid">
<thead>
<tbody aria-live="polite" aria-relevant="all">
<tr class="ng-scope AssociateHighlight odd" >
<td class="ng-binding" style="width: 10px">1</td>
<td class=" text-center" style="width: 2px">
<input class="ng-pristine ng-untouched ng-valid" type="checkbox" ng-change="CheckChange(Ref.RecordNo,Ref.Freeze,Ref.isSelected,'US')" ng-model="Ref.isSelected">
</td>
</tr>
</tbody>
</table>
在表格内,每一行都有一个复选框,我想检查特定行的复选框,下面是我的xpath
WebElement checkBoxSelection = driver.findElement(By.xpath("//*[@id='tblusref']/tbody/tr[1]/td[2]/input"));
checkBoxSelection.click();
请澄清
但在执行期间
Firefox - 它工作正常,但未检查Chrome和IE
Firefox驱动程序:2.51.0
Chrome驱动程序:2.53.1
IE驱动程序:2.42.2
答案 0 :(得分:0)
给定元素无效,也无法在控制台中找到。
请根据复选框更改元素(使用逐个并保留为您提供的任何工作):
WebElement checkBoxSelection = driver.findElement(By.xpath("//input[@class='ng-pristine ng-untouched ng-valid']"));
WebElement checkBoxSelection = driver.findElement(By.xpath("//input[contains(@class,'ng-valid')]"));
当您获得唯一元素时,此处更改内部类文本。
WebElement checkBoxSelection = driver.findElement(By.cssSelector("input[class='ng-pristine ng-untouched ng-valid']"));
然后点击它。
checkBoxSelection.click();
正如在评论中讨论,还有一个我要添加的方案。可能存在相同xpath级别的Web元素列表。请使用索引。
driver.findElement(By.xpath("(//input[@class='ng-pristine ng-untouched ng-valid'])[1]"));
driver.findElement(By.xpath("(//input[@class='ng-pristine ng-untouched ng-valid'])[2]"));
等等......
特别针对此表,解决方案为:
xpath:(//table[@id='tblusref']//input[@class='ng-pristine ng-untouched ng-valid'])[1]
如果有任何疑问,请告诉我。