C# Как продолжить выполнение JavaScript кода после перехода или обновления с помощью CefSharp
Мне нужно программно выполнить 3 действия на веб-странице
- заполнить на сайте текстовое поле
- нажать на кнопку поиска (после этого происходит запрос и страница возвращает мне результаты поиска)
- нажать на первую ссылку
Если я помещу действия 1 и 2 к примеру в кнопку 1:
private void Button1_Click(object sender, EventArgs e)
{
string jsScript1 = "document.getElementById('story').value=" + '\'' + textFind.Text + '\'' + ";"
+ "document.querySelector('body > div.wrapper > div.header > div.header44 > div.search_panel > span > form > button').click();";
var task1 = chrome.EvaluateScriptAsync(jsScript1);
task1.Wait();
}
И действие 3 в кнопку 2:
private void Button2_Click(object sender, EventArgs e)
{
string jsScript3 = "document.getElementsByTagName('a')[1].click();";
var task3 = chrome.EvaluateScriptAsync(jsScript3);
task3.Wait();
}
Все работает идеально. Но я хочу выполнять все эти действия внутри одной кнопки.
Я нашел следующее решение:
private async void ButtonFind_Click(object sender, EventArgs e)
{
//Action 1 & 2
string jsScript1 = "document.getElementById('story').value=" + '\'' + textFind.Text + '\'' + ";"
+ "document.querySelector('body > div.wrapper > div.header > div.header44 > div.search_panel > span > form > button').click();";
await chrome.EvaluateScriptAsync(jsScript1);
//Action3
Thread.Sleep(1000);
string jsScript3 = "document.getElementsByTagName('a')[2].click();";
await chrome.EvaluateScriptAsync(jsScript3);
}
Мне приходится использовать Thread.Sleep(1000); потому что в JavaScript после перехода на другую страницу или нажатия на кнопку поиска уничтожает все скрипты, запущенные в данный момент в браузере. Также я считаю что использовать Thread.Sleep или Task.Delay - это не хорошая идея.
Как еще я могу изменить свой код, не используя Thread.Sleep или Task.Delay?