如何在模拟网页按钮点击后获取源代码
本文关键字:获取 源代码 按钮 网页 模拟 模拟网 | 更新日期: 2023-09-27 18:23:45
我正在尝试获取一个网页的源代码,点击按钮后即可获得。
我可以点击网页上的一个按钮。
webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
webBrowser1.Document.GetElementById("downloadButton").InvokeMember("click");
现在,在此之后会出现一个新窗口。这是不是可以让这个新窗口的源代码出现在点击之后。
一种hacky方法是:
- 将事件处理程序附加到按钮的"onclick"事件
- 然后,一旦触发该事件,请使用Microsoft Internet Controls(SHDocVw)类型库来获取在IE中打开的最后一个URL
- 最后,导航到URL,加载文档后,从
webBrowser1.DocumentText
属性获取文档的源
在您的项目中,添加对Microsoft Internet Controls类型库的引用(您可以在COM选项卡中找到它)。在文件顶部添加:
using SHDocVw;
代码:
webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
// assign the button to a variable
var button = webBrowser1.Document.GetElementById("downloadButton");
// attach an event handler for the 'onclick' event of the button
button.AttachEventHandler("onclick", (a, b) =>
{
// use the Microsoft Internet Controls COM library
var shellWindows = new SHDocVw.ShellWindows();
// get the location of the last window in the collection
var newLocation = shellWindows.Cast<SHDocVw.InternetExplorer>()
.Last().LocationURL;
// navigate to the newLocation
webBrowser1.Navigate(newLocation);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
// get the document's source
var source = webBrowser1.DocumentText;
});
button.InvokeMember("click");