将 IwebElement 传递到 html 敏捷包 C#
Posted
技术标签:
【中文标题】将 IwebElement 传递到 html 敏捷包 C#【英文标题】:Pass IwebElement into html agility pack C# 【发布时间】:2015-11-04 12:42:47 【问题描述】:我遇到了麻烦:
我有我公司的内部 html。在这个页面中,我有一张桌子。我想在 C# 中将 HTML 表转换为 DataTable:
这是我的代码:
IWebElement ie = driver.FindElement(By.XPath(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table"));
ie.GetAttribute("innerHTML");//get Element of the HTML
var doc = new HtmlDocument();
doc.Load("????");
var nodes = doc.DocumentNode.SelectNodes(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table/tr");
var table = new DataTable("MyTable");
var headers = nodes[0]
.Elements("th")
.Select(th => th.InnerText.Trim());
foreach (var header in headers)
table.Columns.Add(header);
var rows = nodes.Skip(1).Select(tr => tr
.Elements("td")
.Select(td => td.InnerText.Trim())
.ToArray());
foreach (var row in rows)
table.Rows.Add(row);
@id='frmClaimSearch']/div[2]/div[1]/div/table/tr");
var table = new DataTable("MyTable is my XPath of Table.
但是这些代码行不起作用。我尝试了很多。请帮帮我。非常感谢。
【问题讨论】:
【参考方案1】:使用LoadHtml()
方法而不是Load()
从HTML 字符串填充HtmlDocument
:
IWebElement ie = driver.FindElement(By.XPath(".//*[@id='frmClaimSearch']/div[2]/div[1]/div/table"));
string innerHtml = ie.GetAttribute("innerHTML");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(innerHTML);
.......
【讨论】:
以上是关于将 IwebElement 传递到 html 敏捷包 C#的主要内容,如果未能解决你的问题,请参考以下文章