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);


原文地址:https://www.cnblogs.com/yidanda888/p/12931543.html