Selenium Webdriver用于从网页检索表

时间:2013-03-21 16:00:15

标签: java selenium-webdriver

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

1 个答案:

答案 0 :(得分: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创建了一个Web元素(“// table [@ id ='accounts'] / thead / tr”)

  2. / thead / tr By.XPath(“// table [@ id =']下创建了一个包含所有 标记网络元素的集合的IList账户] / THEAD / TR / TH“)

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

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

  5. 在/ tbody / tr By.XPath(“// table [@ id ='accounts'] / tbody / tr下创建了一个包含所有 标记web元素集合的IList / TH“)

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

  7. -

    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();
            }
        }
    }