如何从Web表

时间:2017-09-10 10:56:01

标签: java selenium-webdriver

我正在尝试选择一个具有类名称的特定行作为' topicRow post'从下面的表格中可以看出

网站上的代码

<table class="content" width="100%">
<tbody>
    <tr class="topicTitle">
    <tr class="topicSubTitle">
    <tr class="topicRow post">
    <tr class="topicRow_Alt post_alt">
    <tr class="topicRow post">
    <tr class="topicRow_Alt post_alt">
    <tr id="forum_ctl03_ctl00" class="header2">
    <tr class="post">
    <tr>
</tbody>
</table>

Selenium代码

WebElement Webtable=driver.findElement(By.xpath("//*[@class='content']"));
List<WebElement> TotalRowCount=Webtable.findElements(By.xpath("//*[@class='content']/tbody/tr[contains(@class,'topicRow post')]"));
System.out.println("No. of Rows in the WebTable: "+TotalRowCount.size());

问题

每次打印表格中存在的所有行的大小。请指导......

3 个答案:

答案 0 :(得分:2)

在您的代码中,您已经使用Webtable查找行,但您仍然在Webtable.findElements()中重复Webtable的xpath部分"//*[@class='content']"

更改您的代码如下:

List<WebElement> TotalRowCount=Webtable.
    findElements(By.xpath(".//tr[contains(@class,'topicRow post')]"));

或者更改为使用重复的xpath部分driver.findElements()

List<WebElement> TotalRowCount=driver.
     findElements(By.xpath("//*
      [@class='content']/tbody/tr[contains(@class,'topicRow post')]"));

如果以上两种方式无法正常工作,请尝试以下代码:

WebElement table = driver.findElement(By.css("table.content"));
List<WebElement> foundRows = table.findElements(By.css("tr.topicRow.post"));
System.out.println("Found rows count: "+ foundRows.size());

答案 1 :(得分:1)

你可以给一个索引,第一场比赛为1,第二场比赛为2,

Webtable.findElements(By.xpath("//*[@class='content']/tbody/tr[contains(@class,'topicRow post')][1]"));

答案 2 :(得分:1)

使用thread.sleep() 这是代码

Thread.sleep(5000);
List<WebElement> TotalRowCount = driver.findElements(By.xpath("//*[@class='content']/tbody/tr[contains(@class,'topicRow post')]")); 

System.out.println("No. of Rows in the WebTable: "+TotalRowCount.size());