首页 > 解决方案 > CefSharp Winforms - 在显示浏览器之前执行 javascript

问题描述

在向用户显示浏览器之前,我正在尝试加载页面并执行一些 JavaScript。这是因为我想在他们显示之前让他们通过一些屏幕(像硒一样),并且我只想在需要他们输入时显示它(这是在第二次页面加载之后)。

不幸的是我不能直接去那个页面,我必须先点击一个链接。但无论我尝试什么,它仍然会显示浏览器,然后执行 JavaScript。我当前的测试如下,正在玩 browser.visible,但这也不起作用,我仍然看到 js 正在执行。

(站点和 JavaScript 是虚拟值)

 public ChromiumWebBrowser browser;
        public void InitBrowser()
        {
            Cef.Initialize(new CefSettings());
            browser = new ChromiumWebBrowser("https://www.bing.com/");
            this.Controls.Add(browser);
            browser.Visible = false;
            browser.FrameLoadEnd += (sender, args) =>
            {
                //Wait for the MainFrame to finish loading
                if (args.Frame.IsMain)
                {
                    //do this first
                    browser.ExecuteScriptAsyncWhenPageLoaded("document.getElementById('sb_form_q').value = 'test';",true);
                    browser.ExecuteScriptAsyncWhenPageLoaded("document.getElementById('sb_form_go').click();",true);
                    
                }
            };
            browser.FrameLoadEnd += (sender, args) =>
            {
                //Wait for the MainFrame to finish loading
                if (args.Frame.IsMain)
                {
                    //when page is loaded again, do this:
                    browser.ExecuteScriptAsync("document.getElementById('hplogo').src='https://logos-download.com/wp-content/uploads/2016/02/bing-tm-logo.png'");
                    
                }
            };
            //then show browser again
            browser.Visible = true;
        }

标签: c#cefsharp

解决方案


推荐阅读