将 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#的主要内容,如果未能解决你的问题,请参考以下文章

Selenium:使用 C# 在 IWebElement 上触发鼠标滚轮

敏捷项目管理将敏捷思维导入日常

HTML 敏捷包选择节点

敏捷5.3敏捷计划的概念与估算

读书笔记 | 敏捷编码&敏捷调试

无法将视觉上隐藏的元素添加到IList(Selenium,C#)