消除多个Tr标签以获得正确的计数

时间:2015-07-21 17:53:47

标签: java selenium xpath

我正在尝试获取表中的行数,但是由于tr标记打开和关闭,它被计数两次,因此计数不正确。这就是我调试过的。

代码如下:

import java.util.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class back 
{
    public static void main(String args[]) throws InterruptedException
    {
WebDriver driver= new FirefoxDriver();
driver.get("http://www.espncricinfo.com/bangladesh-v-south-africa-2015/engine/match/817213.html");
driver.findElement(By.xpath(".//*[@id='st_1']")).click();
Thread.sleep(5000L);
WebElement table=driver.findElement(By.xpath("//div[@id='full-scorecard']/div[2]/div/table[1]"));
List<WebElement> rows=table.findElements(By.tagName("tr"));
System.out.println("No of rows are " +rows.size());
    }
}

请建议什么是获取行数的正确方法,或者我的xpath中存在一些问题。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情

var rowsCounter =  driver.FindElements(By.Xpath("table\tbody\tr")).count;

因此,您需要检查表中存在多少tr元素。如果有多个表,则需要在xpath中选择正确的表。

另一种方式是相同的,但计算\ tr \ td [1]存在多少元素

答案 1 :(得分:0)

要仅在记分卡中找到11位玩家,您可以使用以下XPath:

//tr[not(@class='dismissal-detail' or @class='tr-heading' or @class='extra-wrap' or @class='total-wrap')]

修改

以下是查找元素的代码:

List<WebElement> rows=table.findElements(By.xpath("/tbody/tr[not(@class='dismissal-detail' or @class='tr-heading' or @class='extra-wrap' or @class='total-wrap')]");

List<WebElement> rows=driver.findElements(By.xpath("//div[@id='full-scorecard']/div[2]/div/table[1]//tr[not(@class='dismissal-detail' or @class='tr-heading' or @class='extra-wrap' or @class='total-wrap')]"));