作者:尤天asoka | 来源:互联网 | 2023-09-12 20:08
本文目录一览:
1、什么是cefsharp.browsersubprocess.exe吗
2、c# cefsharp能不能像webbrowser那样获取到元素,修改这个元素的属性呢
3、C# 的cefsharp 里的ChromiumWebBrowser执行js
什么是cefsharp.browsersubprocess.exe吗
是cefsharp谷歌程序密令,解除方法:
CefSharp调用 js。
CefSharp.WinForms.ChromiumWebBrowser wb;
ExecuteScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,无返回值。
// xxx为js的方法名称。
wb.ExecuteScriptAsync("xxx()");
// 为 js 的 变量jsVar赋值 'abc'
wb.ExecuteScriptAsync("jsVar='abc'");
EvaluateScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,有返回值。
TaskCefSharp.JavascriptResponse t = wb.EvaluateScriptAsync("callTest2()");
扩展资料:
Google Chrome的特点是简洁、快速。GoogleChrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强大的Javascript V8引擎,这是当前Web浏览器所无法实现的。
另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下。
实现了多终端使用浏览器,具有共享收藏历史信息等功能,是手机浏览器的一次巨大突破。随着Android系统的份额不断扩大而市场占有率不断飙升。
c# cefsharp能不能像webbrowser那样获取到元素,修改这个元素的属性呢
cefsharp新手慎用,用的是js代码,可以获取元素修改元素,但是使用js。
var frame = cb.GetMainFrame();
var task = frame.EvaluateScriptAsync("(function() { return document.getElementsByTagName('input')[0].value; })();", null);
这段代码你要充分利用py抓取到可靠信息,知道第一个input是什么,而且有value属性,不然就会报错。
frame.EvaluateScriptAsync()允许你写入js片段。
网页抓捕当中我觉得这个还是靠谱的,现在C#有很多,webbrowser、webkitbrowser、geckofx、webkitsharp......都是些噱头,一般的网页都无法搞定。
py的webdriver和android的webview同出一辙,跟webkit一样。
但是获取信息是不行的,比如我要抓取哪个元素值,你老老实实先把decument对象获取到,再抓。
C# 的cefsharp 里的ChromiumWebBrowser执行js
具体调用:
IBrowser browser = this._browser.GetBrowser();
if (browser.HasDocument)
{
IFrame mainFrame = browser.MainFrame;
var js = "var f= function A(){ return $('img',$('#"+id+"'));}; f();";
var task = mainFrame.EvaluateScriptAsync(js, null);// "(function() { var body = document.body, html = document.documentElement; return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); })();", null);
//执行脚本
//browser.MainFrame.ExecuteJavascriptAsync("document.getElementById('testid').click();");
//browser.MainFrame.ExecuteJavascriptAsync("document.getElementById('testid2').value='123'");
task.ContinueWith(t =
{
if (!t.IsFaulted)
{//返回结果
var respOnse= t.Result;
var result = response.Success ? (response.Result ?? "null") : response.Message;
//html = result.ToString();
}
}, TaskScheduler.FromCurrentSynchronizationContext());
}