首页 > 其他分享 >关于cef的几个知识点

关于cef的几个知识点

时间:2023-01-04 12:01:37浏览次数:37  
标签:知识点 browser cef getElementById Result GetBrowser 返回值 document 关于

执行JS(JavaScript)代码,无返回值

browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('testid').click();");  
browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('testid2').value='123'");  

在其它IFrame中执行JS(JavaScript)代码

string script = "if(document.getElementById('img_out_10000')){ document.getElementById('img_out_10000').click(); }";  
var list = browser.GetBrowser().GetFrameNames();  
if (list.Count > 1)  
{  
 browser.GetBrowser().GetFrame(list[1]).ExecuteJavaScriptAsync(script);  
}  

获取指定的Iframe的代码

this.browser.GetBrowser().GetFrame("tabs_portal_5_iframe").EvaluateScriptAsync("document.getElementById(\"block_3\").click()").Result;

获取包含JS方法的网页的返回值

1 Task<CefSharp.JavascriptResponse> t = mychrome.GetBrowser().MainFrame.EvaluateScriptAsync("callTest2()");
2 // 等待js 方法执行完后,获取返回值
3 t.Wait();
4 // t.Result 是 CefSharp.JavascriptResponse 对象
5 // t.Result.Result 是一个 object 对象,来自js的 callTest2() 方法的返回值
6 if(t.Result.Result != null)
7 {
8    MessageBox.Show(t.Result.Result.ToString());
9 }

执行单条document语句是获取不到返回值的,像下面的代码是获取不到返回值的

1 //这样是获取不到返回值的
2 Task<CefSharp.JavascriptResponse> t = chromeBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("document.getElementsByClassName('ico-goldMedal url-ctrip')[0]");
3             t.Wait();
4             if (t.Result.Result != null)
5             {
6                 MessageBox.Show(t.Result.Result.ToString());
7             }

正确的方法是下面这样 (将单条JS语句放到一个function 内来执行,具体原理我还没有去查相关文档,暂时这样用吧,等闲了再来好好研究一下原因)

 1 object EvaluateJavaScriptResult;
 2 var frame = chromeBrowser.GetMainFrame();
 3 var task = frame.EvaluateScriptAsync("(function() { return document.getElementsByClassName('class名称')[0].innerHTML; })();", null);
 4  task.ContinueWith(t =>
 5  {
 6        if (!t.IsFaulted)
 7                 {
 8                     var response = t.Result;
 9                     EvaluateJavaScriptResult = response.Success ? (response.Result ?? "null") : response.Message;
10                     MessageBox.Show(EvaluateJavaScriptResult.ToString());
11                 }
12             });

标签:知识点,browser,cef,getElementById,Result,GetBrowser,返回值,document,关于
From: https://www.cnblogs.com/boentouch/p/17024439.html

相关文章

  • cmake关于相对路径的一些参数
    项目文件结构  cmake_minimum_required(VERSION3.15)project(AddTest)message("CMAKE_CURRENT_BINARY_DIR:"${CMAKE_CURRENT_BINARY_DIR})message("CMAKE_CU......
  • 关于 safari浏览器 不支持new Date 显示NaN的问题记录
    知识点:newDate问题: safari浏览器 显示NaN因为 JS中要求Date类型转换的原始数据格式是yyyy/mm/dd之类的,所以横岗-要替换掉才可以今天同事来问,我一看果然啊,mac版高......
  • Python爬虫知识点之模块作用
    上一篇文中我们用到了Python的几个模块做了百度新闻的爬取,这些模块他们在爬虫中的作用如下:1、requests模块它用来做http网络请求,下载URL内容,相比Python自带的urllib.reque......
  • 关于数据排序问题使用sort排序
    字母和数字一起排序数字的排序是优先于字母的,   varfruits=["Banana","Orange","Apple","Mango",1,'1',22,1,0,'33'];fruits.sort();//0,1,1,1,......
  • 关于想把console.log的数据复制出来
    打印了一堆console.log,但是想把它拿出来看,网上找了找果然有方法1.  鼠标右键打印的数据,有一个存储对象作为全局变量点击以后会出来一个temp1  最后只需要copy(t......
  • 关于Unreal使用Dedicate Server时的一些研究
    下面的博客链接内容如下:直接点击即可他说的UE4自带的服务器只能用于Development和debugment需要留意一下,不能用于商用版本,说这个性能很低,这个需要我留意一下 这是论......
  • [答疑]关于公众号答题比赛第5轮第1题的解析
    flen2018-11-2721:09第一个题目谁能解释一下潘加宇:本轮共3道题,很多人栽在了第1题,看到选项D是个用例图,就选了D。题目如下:1、以下属于描述"电视机"需求的是:A)B)C)D)我们先来......
  • matlab关于阶梯图和图窗操作
    1阶梯信号绘制Matlab中绘制阶梯图函数:stairsx=[3033374037333027232023273030]';StepNum=length(x);t=[0:600:(StepNum-1)*600]';阶梯信号展示:......
  • 记录一次项目中CEF版本的升级(二):CEF编译
    默认的发布版本是不支持mp4,mp3等音视频格式的,官方解释是说由于版权和各个国家法律问题。这就给我们造成了麻烦。必须得自己下载代码,修改,然后编译,才能支持音视频。官方构建......
  • 关于uniapp多层弹窗click事件点击唤起textarea键盘的问题
    原因由于textarea在原生组件中优先级高,导致click事件会优先触发textarea的点击中间遇到的问题由于使用cover-view将组件优先级实现了覆盖textarea的优先级,但是弹窗中的......