以下是HTML代码示例:
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<tr class="tinyfont">
<tr height="2px">
<tr height="1px">
<tr height="1px">
<tr>
<tr height="2px">
<tr height="1px">
<tr height="1px">
<tr height="2px">
</tbody>
</table>
我正在使用selenium webdriver。 我已收到此代码中的所有子元素,但现在我想在逻辑中排除一个特定的子元素,如何从数组中排除其中一个子元素。 我想排除tr [6]子元素..
List<WebElement> list = driver.findElements(By.xpath("/html/body/table/tbody //*"));
ArrayList<String> al1 = new ArrayList<String>();
for(WebElement ele:list){
String className = ele.getAttribute("class");
System.out.println("Class name = "+className);
al1.add(className);
}
先谢谢!!
答案 0 :(得分:1)
省略第6个表行,然后选择所有后代:
/html/body/table/tbody/tr[position() != 6]//*
或仅选择不在位置1且具有属性的所有表行(然后选择其后代):
/html/body/table/tbody/tr[position() = 1 or @*]//*
或更具体地说,还要检查属性名称:
/html/body/table/tbody/tr[position() = 1 or @height or @class]//*
答案 1 :(得分:0)
您想要避免使用元素6吗?如果是,则使用带有增量的for外观,并使用if语句避免使用元素6.
int numOfElements = driver.findElements(By.xpath("/html/body/table/tbody //*")).count();
ArrayList<String> al1 = new ArrayList<String>();
for(int i = 1; i<= numOfElements; i++)
{
if(i!=6)
{
String className = driver.findElement(By.xpath("/html/body/table/tbody/tr["+i+"]")).getAttribute("class");
System.out.println("Class name = "+className);
al1.add(className);
}
}
这听起来不像是你正在寻找的解决方案,但它仍然是实现你想要的方式。除了你有一个包含可以比较或排除的东西的属性之外,我无法想到另一种方式