【问题标题】:Can't using HtmlDocument in C#无法在 C# 中使用 HtmlDocument
【发布时间】:2016-10-17 10:26:50
【问题描述】:

我使用 Selenium 创建控制台应用程序以从表格中获取文本。

用代码试过:

IList<IWebElement> tableRows = browser.FindElementsByXPath("id('column2')/tbody/tr");
var doc = new HtmlDocument();
doc.LoadHtml(tableRows);

这个错误像:

'HtmlDocument' 不包含采用 0 个参数的构造函数

I read this answer from question

Stackoverflow 中的几乎所有人都可以这样使用:

new HtmlDocument.

为什么我不能使用它。我尝试使用 Winform 应用程序,但我也无法使用 HtmlDocument。

HtmlDocument 似乎只有LoadHmtl(String)。但我的代码是IList&lt;IWebElement&gt;

我不知道如何将其转换为 HTML 字符串以添加到 doc

【问题讨论】:

  • 您是否正确使用了 HtmlAgility Pack,因为他们将其用于 HtmlDocument 类。
  • 试试这个:Install-Package HtmlAgilityPack
  • 在评论前建议使用HtmlAgilityPack。所以我认为HtmlDocument 在命名空间System.Windows.Web 中。我会尝试HtmlAgility Pack
  • 谢谢。何时安装此软件包。它正在工作。但有问题的是,我有一个问题,比如 LoadHtml 只接受字符串 HTML。但我想在此添加行:IList&lt;IWebElement&gt; tableRows = browser.FindElementsByXPath("id('column2')/tbody/tr");。有什么方法可以做到这一点?谢谢
  • 为什么不继续使用 selenium ???,你想使用敏捷包的原因是什么?

标签: c# selenium


【解决方案1】:
IWebElement table = browser.FindElement(By.Id("column2");
var doc = new HtmlDocument();
doc.LoadHtml(table.InnerHtml);

首先你可以使用 selenium 获取表格元素...,如果你选择使用敏捷包,你需要发送到 LoadHtml 方法 string 变量和 html 源代码,所以你需要什么要做的是找到 html 块(在您的情况下是表格)将其作为 IWebElement 并使用 table.InnerHtml 将其发送到 LoadHtml

您也可以发送整页源doc.LoadHtml(driver.PageSource);

【讨论】:

  • 也许提供某种解释,而不仅仅是代码 :) 学习总是有帮助的,而不仅仅是获得原始答案。
  • 谢谢@leon barkan
猜你喜欢
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 2013-08-30
  • 2014-04-27
  • 1970-01-01
  • 2011-12-10
  • 2016-01-06
  • 2013-02-17
相关资源
最近更新 更多