我正在尝试通过编程单击 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();