【问题标题】:Selecting individual parts of cell <td> using Selenium使用 Selenium 选择单元格 <td> 的各个部分
【发布时间】:2014-11-04 21:21:46
【问题描述】:

我已经开始使用 selenium 从使用 Javascript 的网站收集数据。我已经设法从表格中选择单元格,但现在我希望能够从每个单元格中选择“个人”字符串,例如:

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

<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>

我希望能够单独选择单元格中的&lt;td idx="0" adr="0" type="cell"&gt;2014-11-02 21:15:00&lt;/td&gt; 行,这怎么可能? 我希望能够做这样的事情List&lt;WebElement&gt; 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>

表格布局不断变化?

【问题讨论】:

    标签: java javascript selenium web-crawler


    【解决方案1】:

    在您的示例中,idx 不是标签,而是属性。在 Selenium 中,您可以使用 XPath 基于属性进行选择:

    table.findElement(By.xpath("//td[@idx=0]"))
    

    【讨论】:

    • 谢谢,但这是一个“没有这样的元素”异常,数据肯定在那里。
    • 等一下...不,我错了,当我第一次尝试您的解决方案时它起作用了,但接下来的 5 次它没有,我在代码中还有其他事情发生并放入第一个结果归根结底,但我相信您的代码是正确的,改变的是最后一小时的表格!而不是我在问题中的原始表格布局已更改为(请参阅更新的问题)。奇怪在过去的一个小时里发生了什么变化?
    • 那么你必须发布更多代码。在上面的示例中,table 未定义。
    • 我现在在想,如果通过
    【解决方案2】:

    试试这个代码:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      相关资源
      最近更新 更多