我有嵌套列表,其中包含命令(字符串),如Navigate,Type,Click等。
我正在尝试让这些命令/事件一个接一个地运行。 这是一个场景:
Navigate("http://google.com")
Type("Something") // The field identificator is passed to the method too
Click("SomeButton")
我面临的问题是,如果我将事件放在DocumentLoaded事件中,它将触发下一个事件(Type(“Something”))而不单击按钮。 我不知道是否必须创建自定义事件或其他内容。我可以轻松地为这种情况制作它,但问题是命令会有所不同,并且针对不同的网站。
以下是一些有希望使问题足够明确的代码:
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.
}
答案 0 :(得分:0)
你要做的就是翻译这些:
Navigate("http://google.com")
Type("Something") // The field identificator is passed to the method too
Click("SomeButton")
与DOM级别相关的事情。第一个是简单地调用包装器http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.navigate(v=vs.110).aspx
type命令要求你1)获取元素ID并操纵值。
最后,click事件只是1)获取元素ID并调用CLICK方法。
但正如其他人所说,有很多事情需要知道,比如你想要什么元素id或名字?