如何获取硒中的所有行和列?

万洛克

我有一个这样的表:

Name        Places          Sex           Score
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Ken         null            Male          9.5
Smith       London          Male          7.5
Joe         null            null          8.0

我想使用Selenium获取Web中表的所有值。

如何在表中的列和行中获取值并在表中显示数据?

我的代码可以做到这一点:

List<IWebElement> result = new List<IWebElement>();
IList<IWebElement> tableRows = browser.FindElements(By.XPath("id('column2')/tbody/tr"));

foreach (IWebElement rows in tableRows)
{
    try
    {
        if (rows.FindElements(By.XPath("td")).Count == 10)
            result.Add(rows);
    }
}

而且我只得到像这样的所有行文本:

Ken     Male      9.5
Smith   London    Male      7.5
Joe     8.0

如您所见,我仅得到一行。而且我不知道相应的值列。

Joe 8.0 与以下项不匹配:

Name Places Sex Score

我的表格的HTML标记:

<div class="tabbox_F" id="oTableContainer_L">
   <table id="column2">
      <thead>
         <tr class="tabthdwn">
            <th>Name</th>
            <th>Places</th>
            <th>Sex</th>
            <th>Score</th>\
         </tr>
      </thead>
      <tbody>
         <tr class="table Alpha">
            <td>
                 <div class="name"><span>Ken</span></div>
                 <div class= "category"><span>Student</span></div>
            </td>
            <td><div class="address"></div></td>
            <td><div class="sex"><h5>Male</h5></div></td>
            <td>
                 <div class="score_math"><b>9.5</b></div>
                 <div class="score_bio"><b>7.5</b></div>ư
            </td>
         </tr>
         <tr class="table Alpha">
            <td>
                 <div class="name"><span>Joe</span></div>
                 <div class= "category"><span>Teacher</span></div>
            </td>
            <td><div class="address"></div></td>
            <td><div class="sex"></div></td>
            <td>
                 <div class="score_math"><b>8.0</b></div>
                 <div class="score_bio"><b>5.5</b></div>ư
            </td>
         </tr>
      </tbody>
   </table>
</div>
杰夫

仅查看TD并不能充分利用HTML中的所有信息。每个TD都有一个类,该类告诉您每个TD中<td class="name">包含哪些信息,例如,包含名称。充分利用它来分离数据的不同位。

我会做这样的事情。我添加了Values类来临时存储该行的数据。如果您不需要重用数据,而不仅仅是转储值,则可以删除该位。

class Program
{
    static void Main(string[] args)
    {
        IWebDriver browser = new FirefoxDriver();
        List<IWebElement> result = new List<IWebElement>();
        IList<IWebElement> tableRows = browser.FindElements(By.XPath("id('column2')/tbody/tr"));
        By nameLocator = By.ClassName("td > div.name");
        By addressLocator = By.ClassName("td > div.address");
        By sexLocator = By.ClassName("td > div.sex");
        By scoretextLocator = By.ClassName("td > div.score_text");

        // String.Format Method https://msdn.microsoft.com/en-us/library/aa331875(v=vs.71).aspx
        Console.WriteLine("{0,10}{1,10}{2,10}{3,10}",  "Name",  "Address",  "Sex",  "Score");
        foreach (IWebElement rows in tableRows)
        {
            Values values = new Values();
            values.name = rows.FindElement(nameLocator).Text.Trim();
            values.address = rows.FindElement(addressLocator).Text.Trim();
            values.sex = rows.FindElement(sexLocator).Text.Trim();
            values.scoretext = rows.FindElement(scoretextLocator).Text.Trim();

            Console.WriteLine("{0,10}{1,10}{2,10}{3,10}", values.name, values.address, values.sex, values.scoretext);
        }
    }
}

class Values
{
    public string name;
    public string address;
    public string sex;
    public string scoretext;

    public Values()
    {
        this.name = "";
        this.address = "";
        this.sex = "";
        this.scoretext = "";
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从动态创建的行中获取值并将所有列和行值存储在数组中

来自分类Dev

从数组获取所有行和列

来自分类Dev

如何比较两个不同表的列和匹配的列从表一中获取所有行?

来自分类Dev

如何从 SQLite 中的一个表中获取所有父行和子行?

来自分类Dev

Ext Js Grid,如何获取特定列的所有行值和总和?

来自分类Dev

如何根据列的值获取顶部和底部 3 个值的所有行?

来自分类Dev

MySQL:从所有列和行中获取表的MIN值

来自分类Dev

如何从MySQL表中获取具有多列相同值的所有行?

来自分类Dev

如何在excel表格中的所有列中获取值大于数字的行?

来自分类Dev

获取列 a 和 b 的排列唯一的所有行

来自分类Dev

如何获取行和列中的字符?

来自分类Dev

如何使用量角器从无限滚动ng-grid中的所有行和列中获取文本?

来自分类常见问题

如何使用python硒获取所有tr id?

来自分类Dev

如何使用python硒获取所有tr id?

来自分类Dev

硒在下拉菜单中获取所有选项

来自分类Dev

硒-获取页面中的所有iframe(甚至是嵌套的)?

来自分类Dev

python硒获取ul类中的所有文本

来自分类Dev

如何获取MySQL表中列值相同的所有行?

来自分类Dev

我如何从Cassandra CLI的列族中获取所有行键?

来自分类Dev

如何在按一列过滤的所有行中获取重复值

来自分类Dev

如何在TextBoxes中获取dataGridView的选定行的所有列值

来自分类Dev

如何从我的数据库中获取所有列/行 [VB.Net/MariaDB]

来自分类Dev

如何从除 MSSQL 中的一列之外的所有列中具有相同数据的 2 行获取数据

来自分类Dev

在 csv 文件中获取 2 个特定单词之间的所有行和列值,例如开始和停止

来自分类Dev

如何获取表给定行的所有列

来自分类Dev

从所有列中如何获取列是否是表的主键?

来自分类Dev

如何从所有列中获取列是否是表的主键?

来自分类Dev

Java SQL从列中获取所有行

来自分类Dev

如何在熊猫数据框中完全用零删除所有行和列

Related 相关文章

  1. 1

    如何从动态创建的行中获取值并将所有列和行值存储在数组中

  2. 2

    从数组获取所有行和列

  3. 3

    如何比较两个不同表的列和匹配的列从表一中获取所有行?

  4. 4

    如何从 SQLite 中的一个表中获取所有父行和子行?

  5. 5

    Ext Js Grid,如何获取特定列的所有行值和总和?

  6. 6

    如何根据列的值获取顶部和底部 3 个值的所有行?

  7. 7

    MySQL:从所有列和行中获取表的MIN值

  8. 8

    如何从MySQL表中获取具有多列相同值的所有行?

  9. 9

    如何在excel表格中的所有列中获取值大于数字的行?

  10. 10

    获取列 a 和 b 的排列唯一的所有行

  11. 11

    如何获取行和列中的字符?

  12. 12

    如何使用量角器从无限滚动ng-grid中的所有行和列中获取文本?

  13. 13

    如何使用python硒获取所有tr id?

  14. 14

    如何使用python硒获取所有tr id?

  15. 15

    硒在下拉菜单中获取所有选项

  16. 16

    硒-获取页面中的所有iframe(甚至是嵌套的)?

  17. 17

    python硒获取ul类中的所有文本

  18. 18

    如何获取MySQL表中列值相同的所有行?

  19. 19

    我如何从Cassandra CLI的列族中获取所有行键?

  20. 20

    如何在按一列过滤的所有行中获取重复值

  21. 21

    如何在TextBoxes中获取dataGridView的选定行的所有列值

  22. 22

    如何从我的数据库中获取所有列/行 [VB.Net/MariaDB]

  23. 23

    如何从除 MSSQL 中的一列之外的所有列中具有相同数据的 2 行获取数据

  24. 24

    在 csv 文件中获取 2 个特定单词之间的所有行和列值,例如开始和停止

  25. 25

    如何获取表给定行的所有列

  26. 26

    从所有列中如何获取列是否是表的主键?

  27. 27

    如何从所有列中获取列是否是表的主键?

  28. 28

    Java SQL从列中获取所有行

  29. 29

    如何在熊猫数据框中完全用零删除所有行和列

热门标签

归档