gpt4 book ai didi

java - 无法在我们只有 td 标签文本的动态表中获取元素

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:13 24 4
gpt4 key购买 nike

我有一个表,其数据根据添加和删除的内容而变化。表中有多个列名称、数量、类型、状态。我所拥有的只是名称文本,我需要找到具有该名称的那一行的状态字段。

问题是 html 标签具有相同的类名,我尝试获取父级和兄弟级,但都失败了。请找到下表的html结构:

    <table>
<thead> </thead>
<tbody>
<tr>
<td class = "c1">
<a class = txtclass> text1 </a>
</td>
<td class = "c1"> Qty </td>
<td class = "c2"> type </td>
<td class = "c3">
<div id = "1" class = "status1"> /div>
</td>
</tr>
<tr>
<td class = "c1">
<a> text2 </a>
</td>
<td class = "c1"> Qty </td>
<td class = "c2"> type </td>
<td class = "c3">
<div id = "2" class = "status2"> /div>
</td>
</tr>
</tbody>
</table>

所以我只有 text2,我需要获取该行的状态。

我该如何进行。我试过了

  List<WebElement> ele = driver.findElements(By.xpath("//*[@class =     'txtClass'][contains(text(),'text')]"));
for(WebElement el1:ele)
{
WebElement parent = el1.findElement(By.xpath(".."));
WebElement child1= parent.findElement(By.xpath("//td[4]/div"));
System.out.println(child1.getAttribute("class"));
}

这总是给我表中第一行状态的类名。同样我试过

  WebElement child = el1.findElement(By.xpath("//following-sibling::td[4]/div[1]"));

我得到了表中第一行的相同事物类名。我想因为所有子元素的类名都相同,所以它总是会抓取第一行元素,而不是行中的元素。

请帮助我被困在这里很长时间,如果您需要任何其他详细信息,请告诉我。

最佳答案

您正在尝试使用 -

el1.findElements(By.xpath("//following-sibling::td[4]/div[1]"));

它正在匹配页面中格式为 td[4]/div[1] 的所有元素并检索第一个匹配项。

您必须使用以下 xpath 来根据您的文本获取 div 下的 status

driver.findElement(By.xpath(".//tr/td[contains(.,'text1')]/following-sibling::td[3]/div")).getAttribute("class");

如果您要求提取所有状态,请尝试以下代码-

 List<WebElement> allElements = driver.findElements(By.xpath(".//tr/td[contains(.,'text2')]/following-sibling::td[3]/div"));
for(WebElement element:allElements)
{
String status = element.getAttribute("class");
System.out.println(status);
}

关于java - 无法在我们只有 td 标签文本的动态表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com