Как получить элемент управления всплывающим окном со страницы С#

Я работаю над приложением для очистки экрана из приложения Windows.

Я могу автоматически перемещаться по странице входа и всем страницам, используя методы браузера, и иногда мне приходится использовать «.Click» для запуска кнопок на некоторых страницах.

Вот в чем проблема. Когда я делаю последний «щелчок», чтобы получить свои данные, веб-браузер открывает новое окно проводника (всплывающие окна), которое содержит кнопку другой ссылки, и мне нужно нажать на эту кнопку ссылки, используя С#, чтобы получить мои окончательные данные.

Как я могу получить доступ к новому окну (всплывающее окно), чтобы очистить его?

Я использую приведенный ниже код, и этот код открывает URL-адрес в новом всплывающем окне.

 HtmlElement toollinkbutton = WebBrowser1.Document.Window.Document.Body.Document.GetElementsByTagName("a")[48];
toollinkbutton .InvokeMember("click");

person Roshil K    schedule 31.05.2016    source источник


Ответы (1)


Новое окно может быть связано с target="_blank" или javascript, и использование InvokeMember приведет к открытию нового окна. Добавьте обработчик к событию NewWindow элемента управления WebBrowser и обработайте щелчок, вызвав вместо этого 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;
}
person Ryan Peters    schedule 31.05.2016
comment
Спасибо за ответ. Но решение не работает, как я ожидаю. Я удаляю веб-сайт HTTPS. Я использую элемент управления WebBrowser из приложения Windows и загружаю страницу в этот браузер и анализирую данные. Когда страница входа завершается и нажимается на ссылку, теперь открывается новое окно Internet Explorer в виде всплывающего окна. Но прямо сейчас Я не могу получить эти всплывающие данные, потому что они работают как в отдельном окне Интернета. Как я могу получить эти данные в этих всплывающих окнах. - person Roshil K; 01.06.2016
comment
Я получаю сообщение о блокировке всплывающих окон, даже если я разрешаю всплывающие окна в браузере при навигации с использованием приведенного выше кода. - person Roshil K; 01.06.2016