来自Webbrowser控件的链事件

时间:2014-11-05 22:30:41

标签: c#

我有嵌套列表,其中包含命令(字符串),如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.
        }

1 个答案:

答案 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或名字?