-2

セレンWebドライバーを使用して、テーブルに表示されるデータを取得できますか?

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 に答える