pcpao.org/general.php?strap=152814186280001650
在试图从该站点获取完整的超文本标记语言时,.GetSourceAsync和.ViewSource都只显示“框架集”超文本标记语言。使用ShowDevTools选项,完整的超文本标记语言数据既包含在elements集合中,也包含在Chrome-devtools的源代码中。
我在网页加载后运行这个,但它应该仍然存在,因为它在dev-tools中?
要从导航站点中获取完整的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"发布于 2016-03-28 22:08:41
我也有同样的问题,试图让点击和项目定位在框架中,而不是在主框架上。使用您答案中的示例,我编写了以下扩展方法:
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;
}如果您的表单中包含此方法的模块有一个"using“,则可以执行以下操作:
var frame = browser.GetFrame("nameofframe");
if (frame != null)
frame.EvaluateScriptAsync("document.getElementById('whateveridyouwanttoclick').click();");当然,在使用它之前,您需要确保页面加载已完成,但我计划经常使用它。希望它能帮上忙!
发布于 2016-03-20 19:41:58
谢谢,以前版本中的一些例子让我对它的工作原理感到困惑。我在找这样的东西。
var frameIdent = Browser.GetBrowser().GetFrameIdentifiers();
var result = Browser.GetBrowser().GetFrame(frameIdent.Last()).GetSourceAsync().Result;
textBox1.Text = result.ToString();所以我猜从一个站点获取所有超文本标记语言的方法是循环遍历框架标识符列表,通过GetSourceAsync从每个框架中获得结果,并将它们连接成一个字符串。
https://stackoverflow.com/questions/36105240
复制相似问题