0
在一種情況下,我必須選擇一個帶有文本「ALL」的複選框。 下面是示例HTML代碼:從複選框列表中選擇一個複選框
<tbody id="modulePermissionDatagridId_data" class="ui-datatable-data ui-widget-content">
<tr class="ui-widget-content ui-datatable-even" role="row" data-ri="0">
<tr class="ui-widget-content ui-datatable-odd" role="row" data-ri="1">
<td role="gridcell">
<div id="modulePermissionDatagridId:1:j_idt124" class="ui-chkbox ui-widget multipleSelectionChkBox">
<div class="ui-helper-hidden-accessible">
<input id="modulePermissionDatagridId:1:j_idt124_input" type="checkbox" onchange="handleChkBoxValueChange(this)" name="modulePermissionDatagridId:1:j_idt124_input"/>
</div>
**<div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default">**
<span class="ui-chkbox-icon ui-c"/>
</div>
<span class="ui-chkbox-label">ALL</span>
</div>
</td>
</tr>
注:在上面的HTML,複選框被指向上面的「跨度」的「格」的元素。
目前我使用下面的代碼是工作的罰款:
WebElement perm = driver.findElement(By.id("modulePermissionDatagridId_data"));
List<WebElement> permno = perm.findElements(By.tagName("tr"));
int i=0;
for(WebElement wb : permno)
{
String permName = wb.getText();
System.out.println(permName);
//for (int i=0; i< permno.size(); i++)
//{
System.out.println(i);
if (permName.equals("ALL"))
{
System.out.println(permName);
System.out.println(i);
driver.findElement(By.xpath("//*[@id='modulePermissionDatagridId:"+i+":j_idt124']/div[2]")).click();
//break;
}
//}
i++;
}
,但我想簡化該代碼。所以我嘗試了以下XPATH這是行不通的:
driver.findElement(By.xpath("//tbody[@id='modulePermissionDatagridId_data']/tr[./td/div[span='ALL']]/div")).click();
有什麼建議嗎?