Comment obtenir du texte à partir de chaque cellule D'une table HTML?

dans Selenium 2.0, Je n'ai aucune idée de comment traverser une table HTML dans une page web. Dans selenium2.0 javadoc, j'ai trouvé deux classes "TableFinder" et "TableCellFinder", mais je n'ai pas trouvé d'exemples.

je veux faire quelque chose comme ceci:

RowCount=Get how many rows are there in the html table

for each row of the table
{
   column_count=Get column count
   for each column
   {
      cell_value=get_text_from(row,col);
      Do something with cell_value
   }
}

Comment puis-je obtenir le texte de chacune des cellules du tableau?

24
demandé sur Prasad 2011-06-01 13:24:04
la source

6 ответов

Merci pour cette réponse.

j'ai trouvé les solutions en utilisant les classes de sélénium 2.0.

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class WebTableExample 
{
    public static void main(String[] args) 
    {
        WebDriver driver = new InternetExplorerDriver();
        driver.get("http://localhost/test/test.html");      

        WebElement table_element = driver.findElement(By.id("testTable"));
        List<WebElement> tr_collection=table_element.findElements(By.xpath("id('testTable')/tbody/tr"));

        System.out.println("NUMBER OF ROWS IN THIS TABLE = "+tr_collection.size());
        int row_num,col_num;
        row_num=1;
        for(WebElement trElement : tr_collection)
        {
            List<WebElement> td_collection=trElement.findElements(By.xpath("td"));
            System.out.println("NUMBER OF COLUMNS="+td_collection.size());
            col_num=1;
            for(WebElement tdElement : td_collection)
            {
                System.out.println("row # "+row_num+", col # "+col_num+ "text="+tdElement.getText());
                col_num++;
            }
            row_num++;
        } 
    }
}
44
répondu Vikas 2015-03-10 11:33:21
la source

voici un exemple de C# que je viens de concocter, vaguement basé sur la réponse en utilisant des sélecteurs CSS, espérons qu'il sera utilisé par d'autres pour voir comment configurer un

Je n'ai pas utilisé de sélénium 2. Sélénium 1.x a selenium.getTable("tablename".columnNumber.rowNumber) pour atteindre la cellule requise. Peut-être vous pouvez utiliser webdriverbackedselenium et le faire.

et vous pouvez obtenir le total des lignes et des colonnes en utilisant

int numOfRows = selenium.getXpathCount("//table[@id='tableid']//tr")

int numOfCols=selenium.getXpathCount("//table[@id='tableid']//tr//td")
0
répondu A.J 2011-06-01 14:20:40
la source
$content = '';
    for($rowth=0; $rowth<=100; $rowth++){
        $content .= $selenium->getTable("tblReports.{$rowth}.0") . "\n";
        //$content .= $selenium->getTable("tblReports.{$rowth}.1") . "\n";
        $content .= $selenium->getTable("tblReports.{$rowth}.2") . " ";
        $content .= $selenium->getTable("tblReports.{$rowth}.3") . " ";
        $content .= $selenium->getTable("tblReports.{$rowth}.4") . " ";
        $content .= $selenium->getTable("tblReports.{$rowth}.5") . " ";
        $content .= $selenium->getTable("tblReports.{$rowth}.6") . "\n";

    }
0
répondu nguyen thanh huy 2012-06-27 11:54:35
la source

un autre exemple de C#. Je viens d'en faire une méthode d'extension.

public static string GetCellFromTable(this IWebElement table, int rowIndex, int columnIndex)
    {
        return table.FindElements(By.XPath("./tbody/tr"))[rowIndex].FindElements(By.XPath("./td"))[columnIndex].Text;
    }
0
répondu Drew 2016-02-26 21:51:36
la source

ses

selenium.getTable("tablename".rowNumber.colNumber)

selenium.getTable("tablename".colNumber.rowNumber)

-2
répondu Brundha S V 2012-06-21 13:00:38
la source

Autres questions sur