-2

selenium webdriver 可以用于检索表中显示的数据吗?

4

1 回答 1

0

是的 Selenium WebDriver 可用于从表中检索数据。按照以下 C# 代码从表中检索数据。为了证明这一点,我在“ http://developer.yahoo.com/yui/examples/datasource/datasource_table_to_array.html ”中使用了一个 id="accounts" 的表。

<table id="accounts"> 
    <caption>Table in markup with data in it</caption>
    <thead> 
           <tr> 
                <th>Due Date</th> 
                <th>Account Number</th> 
                <th>Quantity</th> 
                <th>Amount Due</th> 
           </tr> 
    </thead> 
    <tbody> 
           <tr> 
                <td>1/23/1999</td> 
                <td>29e8548592d8c82</td> 
                <td>12</td> 
                <td>$150.00</td> 
           </tr> 
           <tr> 
                <td>5/19/1999</td> 
                <td>83849</td> 
                <td>8</td> 
                <td>$60.00</td> 
           </tr> 
            ... 
   </tbody> 
</table> 

代码的详细信息。

  1. 为 By.XPath("//table[@id='accounts']/thead/tr") 创建了一个 Web 元素

  2. 创建了一个 IList,其中包含所有标记/thead/tr下的 web 元素By.XPath("//table[@id='accounts']/thead/tr/th")

  3. 使用循环访问表头的内容。

  4. 为 By.XPath("//table[@id='accounts']/tbody/tr") 创建了一个 Web 元素

  5. 创建了一个 IList,其中包含所有标记 /tbody/tr 下的 web 元素 By.XPath("//table[@id='accounts']/tbody/tr/th")

  6. 使用循环访问表体的内容。

-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace BusinessCreation
{
    class ExtractDataFromATable
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();
         driver.Navigate().GoToUrl("http://developer.yahoo.com/yui/examples/datasource/datasource_table_to_array.html");
          if(driver.FindElement(By.XPath("//table[@id='accounts']/thead/tr/th")).Displayed)
            {
                IWebElement webElementHead =  driver.FindElement(By.XPath("//table[@id='accounts']/thead/tr"));
                IList<IWebElement> ElementCollectionHead = webElementHead.FindElements(By.XPath("//table[@id='accounts']/thead/tr/th"));
                foreach (IWebElement item in ElementCollectionHead)
                {
                    Console.WriteLine(item.Text);
                }
            }
            if (driver.FindElement(By.XPath("//table[@id='accounts']/tbody/tr")).Displayed)
            {
                IWebElement webElementBody = driver.FindElement(By.XPath("//table[@id='accounts']/tbody/tr"));
                IList<IWebElement> ElementCollectionBody = webElementBody.FindElements(By.XPath("//table[@id='accounts']/tbody/tr"));
                foreach (IWebElement item in ElementCollectionBody)
                {
                    string []arr= new string[4];
                    arr = item.Text.Split(' ');
                    for (int i = 0; i < arr.Length; i++)
                    {
                        Console.WriteLine(arr[i]);
                    }               
                }
            }
            Console.ReadLine();
        }
    }
}
于 2013-03-24T06:20:40.363 回答