在Java中使用Selenium获取表内容

时间:2015-02-20 10:02:39

标签: java selenium-webdriver web-scraping

这是我的其他帖子的延续

Using JSoup to get data-code value of a table

我正在尝试使用Selenium webdriver中的<span>方法将文本放在桌面上的cssSelector()标记内

<table class ="team-list">
          <tr data-code="1">
              <td>
              <span>
                 Get This Text
              </span>
              </td>     
          </tr>
  </table>

我已尝试过以下代码,但这会在每行的所有单元格中打印出文本,但我需要在<span>代码中找到一个

>
WebDriver driver = new FirefoxDriver();
driver.get("http://www.example.com");

List<WebElement> elements = driver.findElements(By.cssSelector("table.team-list td"));

for(WebElement element: elements)
{
    System.out.println(element.getText());
}

3 个答案:

答案 0 :(得分:0)

我认为您应该将选择器更改为:

By.cssSelector("table.team-list span")

答案 1 :(得分:0)

尝试这样的事情。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.example.com");
List<WebElement> elements = driver.findElements(By.cssSelector("table.team-list td"));

    for(WebElement element: elements)
    {
        try{
           System.out.println(element.findElement(By.tagName("span")).getText());
         }(org.openqa.selenium.NoSuchElementException nsee){
         }
    }

答案 2 :(得分:0)

如果您知道要查找的文字,则可以执行以下操作:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.example.com");

List<WebElement> elements = driver.findElements(By.cssSelector("table.team-list td"));

for(WebElement element: elements)
{
    if(element.getText().equals("Get This Text"))
       System.out.println(element.getText());
}

可能是o(n),但是如果您不关心可以解决问题的性能。