我正在为Windows应用程序中的屏幕报废应用程序
工作我可以使用浏览器方法自动浏览登录页面和所有页面,有时必须使用“.Click”触发某些页面上的按钮。
这是问题所在。当我做最后的“点击”以获取我的数据时,网络浏览器打开一个新的浏览器窗口(弹出窗口),其中包含另一个链接按钮,我必须使用c#单击此链接按钮以获取我的最终数据。
如何访问新窗口(弹出窗口)进行刮擦?
我正在使用下面的代码,此代码在新的弹出窗口中打开URL。
HtmlElement toollinkbutton = WebBrowser1.Document.Window.Document.Body.Document.GetElementsByTagName("a")[48];
toollinkbutton .InvokeMember("click");
答案 0 :(得分:1)
新窗口可能是由于目标=" _blank"或javascript并使用InvokeMember将导致新窗口打开。向WebBrowser控件NewWindow事件添加处理程序,并通过调用Navigate()来处理单击。
private string url = "";
public Form1()
{
InitializeComponent();
WebBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
WebBrowser1.NewWindow += new System.ComponentModel.CancelEventHandler(webBrowser1_NewWindow);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElementCollection links = WebBrowser1.Document.Links;
foreach (HtmlElement var in links)
{
var.AttachEventHandler("onclick", LinkClicked);
}
}
private void LinkClicked(object sender, EventArgs e)
{
HtmlElement link = WebBrowser1.Document.ActiveElement;
url = link.GetAttribute("href");
}
void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
{
WebBrowser webBrowser = (WebBrowser)sender;
HtmlElement link = webBrowser.Document.ActiveElement;
Uri urlNavigated = new Uri(link.GetAttribute("href"));
WebBrowser1.Navigate(url);
e.Cancel = true;
}