如何为下面的td编写xpath或locator

时间:2016-07-29 13:02:56

标签: css arrays string xpath css-selectors

UI screen shot在这里,我必须将所有td标记放在一个数组中并与数据库数据进行比较。在这里,我只获得一个td的xpath。请告诉我如何找到这些元素并将其放入数组中。这样我就可以进行循环并使用数据库表数据检查数据。我想要那些带有list_UID的td。我附在屏幕截图

<table id="list" class="table table-hover table-stripe ui-jqgrid-btable" 
cellspacing="0" cellpadding="0" border="0" tabindex="0" role="grid" 
aria-multiselectable="true" aria-labelledby="gbox_list" style="width: 
2685px;">
<tbody>
<tr class="jqgfirstrow" style="height:auto" role="row">
<tr id="1" class="ui-widget-content jqgrow ui-row-ltr" tabindex="-1" 
role="row">
<td class="ui-state-default jqgrid-rownum" aria-describedby="list_rn" 
title="1" style="text-align:center;width: 40px;" role="gridcell">1</td>
<td aria-describedby="list_cb" style="text-align:center;width: 25px;" 
role="gridcell">
<td aria-describedby="list_Info" title="" style="" role="gridcell">
<td aria-describedby="list_UID" title="201607051541214549899" style="" 
role="gridcell">201607051541214549899</td>
<td aria-describedby="list_NoofActivities" title="" style="" 
role="gridcell">
<td aria-describedby="list_Executor" title="" style="" role="gridcell">
<td aria-describedby="list_Title" title="Mr." style="" 
role="gridcell">Mr.</td>

2 个答案:

答案 0 :(得分:0)

如果你想要所有包含list_UID的tds,你可以使用cssSelector找到它,如下所示(假设你使用的是java): -

List<WebElement> list_UID = driver.findElements(By.cssSelector("td[aria-describedby='list_UID']"));

已修改: - 如果您希望标题包含数据列表且标题ID不同,请尝试使用By.xpath() |条件,如下所示: -

List<WebElement> list_UID = driver.findElements(By.cssSelector(".//th[@id='list_Village'] | .//td[@aria-describedby='list_UID']"));

希望它有帮助...:)

答案 1 :(得分:0)

.//*[@id='1']/td[4]只返回一个元素的原因是因为您明确要求只有一个元素两次。一次,使用[@id='1'],因为id属性是唯一的,其次是td[4],只需要第四个td元素。

  

我想要那些带有list_UID的td。

然后你应该编写你的XPath表达式来做你想做的事情:

.//td[@aria-describedby='list_UID']

这会获得td属性为area-describedby的所有"list_UID"个元素。