0

我使用 webbrowser 在 C# 项目框架 4 中打开了一个 URL。

当我做:

                foreach (HtmlElement ele in webBrowser1.Document.All)
                {
                    if (ele.GetAttribute("className") == "clickMe")
                        ele.InvokeMember("Click");
                }

在纯 Javascript 中是:

document.getElementByClassName("getMe")[0].click()

这将出现一个可点击的新按钮。

问题是当我想单击单击后创建的新按钮时:

                foreach (HtmlElement elem in webBrowser1.Document.All)
                {
                    if (elem.GetAttribute("className") == "newButton")
                        elem.InvokeMember("Click");
                }

我把这段代码放在中间,但什么也没有:

                while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }

所以,问题是 webbrowser 在第一次单击 clickMe 类属性后不会动态更改 html。clickMe 是 HTML“a”标签的类(标签有一些属性)

4

1 回答 1

0

使用 javascript 注入。

HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = "function clickMe() { document.getElementByClassName('getMe')[0].click() }";
head.AppendChild(scriptEl);
webBrowser1.Document.InvokeScript("clickMe");
于 2016-01-09T20:54:43.400 回答