JavaScript代码仅在开发人员控制台中执行时起作用



我正在尝试通过编程单击 chromiumwebbrowser内部网站上的文件输入按钮

但是,当JavaScript代码使用 executescriptasync 执行时,什么也不会发生。

但是...当我在Chromiumwebbrowser的开发人员控制台中执行相同的代码行时,单击文件输入按钮并出现"选择文件对话框"。

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Windows.Forms;
namespace Uploader
{
    public partial class UploaderForm : Form
    {
        private readonly ChromiumWebBrowser webBrowser = new ChromiumWebBrowser("http://tinyupload.com/");
        public ImageIdentificationForm()
        {
            InitializeComponent();
            webBrowser.FrameLoadEnd += WebBrowser_FrameLoadEnd;
            Controls.Add(webBrowser);
        }
        private void WebBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
        {
            if (e.Url == webBrowser.Address)
            {
                if (webBrowser.Address == "http://tinyupload.com/")
                {
                    webBrowser.ExecuteScriptAsync("document.querySelector('[name=uploaded_file]').click();");
                    Console.WriteLine("Executed script!");
                }
            }
        }
    }
}

如何使用 executeScriptasync

编程单击文件输入按钮

顺便说一句,"执行脚本!"写在控制台中。(因此...代码被执行。)

您确定该按钮目前正在调用该按钮吗?该按钮可以由某些JS代码创建。如果是真的,类似的事情可能会有所帮助:

  var button = null;
  do {
    button = document.querySelector('[name=uploaded_file]');
  } while (button == null);
  button.click();

相关内容

  • 没有找到相关文章

最新更新