0
我试图以编程方式单击ChromiumWebBrowser内的网站上的文件输入按钮。JavaScript代码仅在开发人员控制台中执行时才有效
但是,当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文件输入按钮?
顺便说一下,“执行脚本!”写在控制台中。 (所以...代码IS执行。)
这是一个好主意,我感谢你的回应。我应该提到我已经尝试了一些类似于你的想法的东西。 [(即使CefSharp Wiki声明FrameLoadEnd是在DOM加载后调用的。)](https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#when-can-i-start -executing的JavaScript) – Owen