cefSharp通过js操控页面,含跨域操控

基本操控
cefSharp可以让页面运行指定的js代码,所以这就为操控页面提供了方法,js能做的所有操控DOM元素的方法,cefSharp都可以做了
在67版本中对页面使用js的方法很简单,一句话:

browser.ExecuteJavaScriptAsync(script);//script是String格式的js代码
1
##获取Js返回的结果

如果要获取到js返回的结果,则需要麻烦一点

String script =
@"(function() {
var tags = document.getElementsByTagName('span');
var result=false;
for(var i in tags){
if (tags[i].nodeType == 1){
if (tags[i].getAttribute('class') == 'example'){
result=true;
}
}
}
return result;
})()";

browser.EvaluateScriptAsync(script).ContinueWith(x =>
{
var response = x.Result;

if (response.Success && response.Result != null)
{
bool result = (bool)response.Result;
if (result)
{
//TODO
}
else
{
//TODO
}
}
});

注意:花括号中间的代码是异步执行的
上面的例子的作用是在在页面中寻找一个class为example的span元素,找到返回true,找不到返回false;

跨域操控
跨域操控的方式很简单,读取browser里面有几个框架,在框架下面执行指定JS代码就好了

List<long> idList = browser.GetBrowser().GetFrameIdentifiers();//idList里面装了页面所有iframe的数据
//取出第2个iframe
IFrame frame = browser.GetBrowser().GetFrame(idList[2]);
//执行js代码
frame.ExecuteJavaScriptAsync(script);
————————————————

posted @ 2020-06-04 10:54  左正  阅读(1191)  评论(0编辑  收藏  举报