我有一张桌子,我试图从via xpath获取数据。该表的一个简单示例如下所示:
horse id1 id2 id3 id4
abc 1 1 1 1
123 2 2 2 2
cba 3 3 <span>3</span> 3
321 4 4 4 4
我想要做的是查看列id3
并找到包含范围代码的行(在本例中为第3行)。一旦我有了这个,我想得到该行第1列的值(跨度的那一行),这将是cba。
有人可以帮忙吗?
答案 0 :(得分:0)
如果您想匹配包含tr
的{{1}},那么您可以使用以下span
:
XPath
另请注意,您可以使用target / parent / child / sibling元素的属性来使用不那么复杂且更详细的表达式。
假设您需要匹配链接
//table[1]//tr[.//span]/td[6]/a[1]
你可以使用
<tr>
<td>
<a class="link new-link" href="/some/source">Click me!</a>
</td>
</tr>
和
//a[text()="Click me!"]
和
//a[@href="/some/source"]
......还有很多其他组合
答案 1 :(得分:-1)
请尝试以下代码。
List<WebElement> elements = driver.findElements(By.xpath("//td/span"));
for(int i=0;i<elements.size();i++)
{
System.out.println(elements.get(i).getText()); //Will give you only those data which `<td>` contains `<span>` tag.
}
更新了答案
如果您只希望第四列<td>
数据包含<span>
标记,请参阅以下代码。
假设您的HTML看起来像这样。
<table>
<tr>
<th>horse</th>
<th>number1</th>
<th>number2</th>
<th>number3</th>
</tr>
<tr>
<td>horse1</td>
<td>3424</td>
<td>data1</td>
<td>-----</td>
</tr>
<tr>
<td>horsename2</td>
<td>123</td>
<td><span>data2</span></td>
<td>-----</td>
</tr>
<tr>
<td>horsename2</td>
<td>123</td>
<td>-----</td>
<td><span>data3</span></td>
</tr>
</table>
参考此代码。
int b = 1;
int[] array_list = new int[] {1,2,3}; //int b presents `<tr>` tag.
for(int i =0; i<array_list.length;i++)
{
WebElement span_source = driver.findElement(By.xpath("//th[4]/..//following::tr["+b+"]/td[4]"));
try
{
WebElement span = driver.findElement(By.xpath("//th[4]/..//following::tr["+b+"]/td[4]/span"));
System.out.println(span.getText());
}
catch(Exception e)
{
System.out.println("TD tag not contains data with span tag.");
}
b++;
}