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