使用Selenium选择细胞的各个部分

时间:2014-11-04 21:21:47

标签: java javascript selenium web-crawler

我已经开始使用selenium从使用Javascript的网站收集数据。我已经设法达到了能够从表中选择单元格的程度,但我现在希望能够选择" Individual"来自每个单元格的字符串,例如:

这是表格中的一个单元格:

<tr data-ig="x:360964033.17:adr:0:tag:" tag="" adr="0" type="row">
   <td idx="0" adr="0" type="cell">2014-11-02 21:15:00</td>
   <td idx="1" adr="1" type="cell">AMALT</td>
   <td idx="2" adr="2" type="cell">60007</td>
   <td idx="3" adr="3" type="cell">107115</td>
   <td class="ig9a63765d">1</td>
   <td idx="9" adr="9" type="cell">576833</td>
</tr>

我希望能够单独选择单元格中的<td idx="0" adr="0" type="cell">2014-11-02 21:15:00</td>行,这怎么可能? 我希望能够做这样的事情List<WebElement> allRows = table.findElements(By.tagName("idx=0"));,但这不起作用。

我像这样收集整个表格和单元格:

 // Now get all the TR elements from the table 
         List<WebElement> allRows = table.findElements(By.tagName("tr")); 
         // And iterate over them, getting the cells 
         for (WebElement row : allRows) { 
             List<WebElement> cells = row.findElements(By.tagName("td")); 

             // Print the contents of each cell
             for (WebElement cell : cells) { 
                 System.out.println(cell.getText());
             }break;
         }

谢谢。

更新,表格布局已更改为:

<tr data-ig="x:360964033.17:adr:0:tag:" tag="" adr="0" type="row">
      <td>2014-11-04 23:00:00</td>
      <td idx="1" adr="1" type="cell">gasdjjhg</td>
      <td idx="2" adr="2" type="cell">11344</td>
      <td idx="3" adr="3" type="cell">14500</td>
      <td idx="4" adr="4" type="cell">saddasd</td>
      <td></td>
      <td>sdsed</td>
      <td>dsfdsf</td>
      <td class="ig9a63765d">1</td>
      <td></td>
   </tr>

表格布局在不断变化?

2 个答案:

答案 0 :(得分:0)

在您的示例中,idx不是标记,而是属性。在Selenium中,您可以使用XPath:

基于属性进行选择
table.findElement(By.xpath("//td[@idx=0]"))

答案 1 :(得分:0)

试试这段代码:

注意:假设'data-ig'值不会改变。

    List allRows = table.findElements(By.xpath("//tr[@data-ig='x:360964033.17:adr:0:tag:']/td"));
    for(WebElement row: allRows){
    System.out.println(row.getText());
    }