selenium webdriver 可以用于检索表中显示的数据吗?
问问题
1876 次
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>
代码的详细信息。
为 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();
}
}
}
于 2013-03-24T06:20:40.363 回答