ng model - 选中Xpath不在chrome和IE驱动程序中的复选框

时间:2016-12-13 06:48:01

标签: java angularjs selenium selenium-chromedriver

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

1 个答案:

答案 0 :(得分:0)

给定元素无效,也无法在控制台中找到。

根据复选框更改元素(使用逐个并保留为您提供的任何工作):

  1. WebElement checkBoxSelection = driver.findElement(By.xpath("//input[@class='ng-pristine ng-untouched ng-valid']"));

  2. WebElement checkBoxSelection = driver.findElement(By.xpath("//input[contains(@class,'ng-valid')]")); 当您获得唯一元素时,此处更改内部类文本。

  3. WebElement checkBoxSelection = driver.findElement(By.cssSelector("input[class='ng-pristine ng-untouched ng-valid']"));

  4. 然后点击它。

    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]

    如果有任何疑问,请告诉我。