pcpao.org/general.php?strap=152814186280001650
在尝试从该站点获取完整的HTML时,.GetSourceAsync和.ViewSource都只显示'frameset'HTML。使用ShowDevTools选项,完整的HTML数据包含在元素集合和Chrome-devtools的源代码中。
我在网页加载后运行这个,但它应该都在那里,因为它在开发工具中?
从导航网站获取完整的HTML后我缺少什么。我怀疑这与帧有关,但经过一个小时的谷歌搜索和阅读旧消息,我看到这只是切向提到。
Winforms
package id="cef.redist.x64" version="3.2526.1362" targetFramework="net46"
package id="cef.redist.x86" version="3.2526.1362" targetFramework="net46"
package id="CefSharp.Common" version="47.0.3" targetFramework="net46"
package id="CefSharp.WinForms" version="47.0.3" targetFramework="net46"
答案 0 :(得分:6)
我有同样的问题试图点击并且项目位于框架而不是主框架上。使用你的答案中的例子,我写了以下扩展方法:
public static IFrame GetFrame(this ChromiumWebBrowser browser, string FrameName)
{
IFrame frame = null;
var identifiers = browser.GetBrowser().GetFrameIdentifiers();
foreach (var i in identifiers)
{
frame = browser.GetBrowser().GetFrame(i);
if (frame.Name == FrameName)
return frame;
}
return null;
}
如果您的表单上有“使用”包含此方法的模块,您可以执行以下操作:
var frame = browser.GetFrame("nameofframe");
if (frame != null)
frame.EvaluateScriptAsync("document.getElementById('whateveridyouwanttoclick').click();");
当然,在使用之前你需要确保页面加载完成,但我打算大量使用它。希望它有所帮助!
吉姆
答案 1 :(得分:2)
谢谢,以前版本的一些例子让我感到困惑,这是如何工作的。我正在寻找这样的东西。
var frameIdent = Browser.GetBrowser().GetFrameIdentifiers();
var result = Browser.GetBrowser().GetFrame(frameIdent.Last()).GetSourceAsync().Result;
textBox1.Text = result.ToString();
所以我想从网站获取所有HTML的方法是循环遍历框架标识符列表,通过GetSourceAsync从每个框架获取结果并将它们连接成一个字符串。