Я вложенной списки, содержащие команды (строки), как Navigate, тип, нажмите и т.д.цепь событий от контроля Webbrowser
Я пытаюсь сделать эти команды/события запустить один за другим. Вот сценарий:
Navigate("http://google.com")
Type("Something") // The field identificator is passed to the method too
Click("SomeButton")
Проблема я столкнулся, если я поставил события в случае DocumentLoaded будет срабатывать только следующий (Type («Что-то»)), не нажимая кнопку. Я не знаю, нужно ли создавать пользовательские события или что-то еще. Я могу легко сделать это для этого сценария, но дело в том, что команды будут разными и для разных сайтов.
Вот код, который, мы надеемся, сделает этот вопрос достаточно ясен:
List<string> commandsList = new List<string>();
//[0] => navigate>http://google.com
//[1] => type>name>q>value
//[2] => click>name>btnK
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
return;
doAction(commandsList[1]);
// how to "fire" commandsList[2] ?
}
private void startBtn_Click(object sender, EventArgs e)
{
doAction(commandsList[0]); // First action is always navigation
}
private void doAction(List<string> commands)
{
// Do something with the WebBrowser(fill fields, etc.). Depends on the commands list.
}
'но дело в том, что команды будут разными и для разных сайтов.« Как вы уже заметили, нет ни одного решения, которое применимо ко всем случаям. Вот почему люди пытаются использовать API (если есть), вместо того, чтобы пытаться анализировать html-страницы. –
Да, но если мне удастся выполнить команды из списка команд, следовательно, это решит мою проблему. – user1410644
'Я могу легко сделать это для этого сценария', а затем сделать это для этого * сценария *. Но не ожидайте общего пути. (Если бы этот сайт хотел, чтобы вы использовали его программно, он предоставил бы некоторые API, поэтому никакого общего способа взломать) –