Доброго времени суток, не подскажите, как программно нажать на кнопку использую cefsharp (chromium), код кнопки
<button type="submit" class="button-download">Скачать 4.22 Mb<br/>по прямой ссылке</button>
Нужен пример именно с CefSharp, простой webbrowser тут не поможет, к сожалению. Можете помочь ?
код, который на данный момент я имею
public class DownloadHandler : IDownloadHandler
{
public event EventHandler<DownloadItem> OnBeforeDownloadFired;
public event EventHandler<DownloadItem> OnDownloadUpdatedFired;
public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
{
OnBeforeDownloadFired?.Invoke(this, downloadItem);
if (!callback.IsDisposed)
{
using (callback)
{
callback.Continue(@"C:\Users\ABS\Downloads\" +
downloadItem.SuggestedFileName,
showDialog: false);
}
}
}
public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
{
OnDownloadUpdatedFired?.Invoke(this, downloadItem);
}
}
public ChromiumWebBrowser chromeBrowser;
public void InitializeChromium()
{
CefSettings settings = new CefSettings();
// Initialize cef with the provided settings
Cef.Initialize(settings);
// Create a browser component
chromeBrowser = new ChromiumWebBrowser("http://link.ru");
chromeBrowser.DownloadHandler = new DownloadHandler();
// Add it to the form and fill it to the form window.
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
}
document.querySelector('.button-download').click()
<button type="submit" class="button-download" onclick="alert('Кнопка нажата.')">Скачать 4.22 Mb<br/>по прямой ссылке</button>
Вам нужно дождаться, когда браузер выполнит инициализацию, прежде чем выполнять большинство вещей, включая выполнение javascript. Вы можете подключить события FrameLoadEnd
/ LoadingStateChanged
/ IRenderProcessMessageHandler.OnContextCreated
и сделать что-то вроде этого.
chromeBrowser.FrameLoadEnd += OnIsBrowserInitializedChanged;
private void OnIsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs args)
{
if(args.IsBrowserInitialized)
{
browser.ExecuteScriptAsync("document.querySelector('.button-download').click()");
}
}
Больше примеров в официальной справке
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос в следующем, как лучше реализовать механизм Include?
Ориентация WrapPanel перекрываетсяВ результате вместо столбцов получается обычная прокрутка вниз
Как инвертировать прокрутку между VerticalScrollBar и HorizontalScrollBar ?
Попытка установить кастомный формат времени для DateTimePicker не дает нужного результатаДокументация по компоненту говорит, что для показа AM/PM нужно...