セレンWebドライバーを使用して、テーブルに表示されるデータを取得できますか?
1 に答える
はい、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>
コードの詳細。
By.XPath("//table[@id='accounts']/thead/tr") の Web 要素を作成しました
すべてのコレクションで IList を作成しました/thead/trの下の Web 要素にタグを付ける By.XPath("//table[@id='accounts']/thead/tr/th")
ループを使用してテーブル ヘッドの内容にアクセスします。
By.XPath("//table[@id='accounts']/tbody/tr") の Web 要素を作成しました
すべてのコレクションで IList を作成しました/tbody/tr の下の Web 要素にタグを付ける By.XPath("//table[@id='accounts']/tbody/tr/th")
ループを使用してテーブル本体の内容にアクセスします。
-
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();
}
}
}