我正在尝试获取表中的行数,但是由于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中存在一些问题。
答案 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')]"));