可以使用selenium webdriver检索表中显示的数据吗?
答案 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>
代码详情。
为By.XPath创建了一个Web元素(“// table [@ id ='accounts'] / thead / tr”)
在 / thead / tr By.XPath(“// table [@ id =']下创建了一个包含所有 标记网络元素的集合的IList账户] / THEAD / TR / TH“)
使用循环访问表头的内容。
为By.XPath创建了一个Web元素(“// table [@ id ='accounts'] / tbody / tr”)
在/ tbody / tr By.XPath(“// table [@ id ='accounts'] / tbody / tr下创建了一个包含所有 标记web元素集合的IList / 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();
}
}
}