Использование браузера CefSharp в .NET-проекте для автоматизации проекта веб-сайта, но я подозреваю, что это общий вопрос JavaScript.
Чтобы автоматизировать веб-сайт, мне нужно найти элемент ввода и смоделировать пользователянажмите и затем заполните поле, затем нажмите и заполните другое.Последовательность щелчка - фокуса - размытия важна, потому что этот конкретный сайт прослушивает событие размытия для выполнения какого-либо действия AJAX.
Моя проблема в том, что я не могу запустить событие размытия поля ввода, когда я программно 'щелкните по следующему полю.
По сути, я делаю цикл через поля ввода и делаю это для каждого:
el.click(); //click it
el.focus(); //just trying to force focus
el.value = 'sometext'; //change it
...and loop to next field
Моя цель состоит в том, чтобы на втором проходе событие размытия первого полябудет срабатывать, но это не так.
Но я могу добиться этого с помощью:
var ev=document.createEvent('HTMLEvents');
ev.initEvent('blur', false, true);
el.dispatchEvent(ev);
Проблема в том, что у меня есть специальные знания об этом сайте и я знаю размытиедолжно произойти, но я хочу общее решение, которое будет запускать все обычные события - фокус, размытие, изменение, что угодно, я думал el.click ();будет делать это, но, очевидно, нет.
РЕДАКТИРОВАТЬ:
Это выглядело многообещающе, но это также не запускает события.
browser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
System.Threading.Thread.Sleep(100);
browser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
Я посмотрел на кукловода, кажется, что .NET-оболочке требуется> framework 4.0, мое требование 4.0, а селен, кажется, без головы, мне нужен видимый браузер.Дополнительные исследования указаны, но я в целом доволен CefSharp и тем, что он может сделать.
Я знаю, что могу «форсировать» события, так что фокус, изменение, размытие, скорее всего, охватят все, думаю, возможны также мышь / вверх / вниз / щелчок, нажатие клавиши, вниз, вниз.