Программирование WebBrowser Control Вкладки в запросе страниц документа - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь загрузить информацию с веб-сайта, и я ударил (еще одну) кирпичную стену в долгом и утомительном путешествии, чтобы развить что-то продуктивное.

У меня есть программа, которая использует WebBrowser для входа на сайт - с действительными именем пользователя и паролем - тем самым позволяя мне установить законное соединение с ним и получать от него информацию (свою).

На начальной странице, предоставленной мне после входа в систему, я могу использовать WebBrowser.Document.GetElementsByTagName("A"), WebBrowser.Document.GetElementById("Some Id") и т. Д., Чтобы обойти сайт и обработать все события DocumentCompleted , возвращенные до ... Я попадаю на страницу, которая, кажется, имеет встроенный TabControl .

Мне нужно иметь возможность выбрать среднюю вкладку этого элемента управления и извлечь информацию, которую он содержит. Когда я получаю доступ к этой информации «нормально» (то есть из IE, а не из моей программы WebBrowser ), я могу щелкнуть по каждой из трех вкладок, и информация должным образом появляется - так что ее там, мучительно так ... но могу ли я манипулировать этими вкладками из моей программы? Я чувствую, что это возможно, но я не понимаю, как я могу это сделать.

Проблема проявляется потому, что когда я обрабатываю страницу с вкладкой, мой код выглядит следующим образом:

static void wb_TabPage(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser wb = (WebBrowser)sender;
    HtmlElement element;

    element = wb.Document.GetElementById("Bills");  // Find the "Bills" tab
    element.InvokeMember("Click");                  // Click the "Bills" tab

    // Unhook THIS routine from DocumentCompleted delivery
    wb.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(wb_TabPage);
    // Hook up this routine - for the next 'Document Completed' delivery - which never arrives!
    wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_Bills);

    return;
}

И в этом проблема - больше документов «не завершено» для меня, чтобы обработать, даже после InvokeMember («Click»). Для всего мира кажется, что вкладки обновляются на месте, и никакие обновления (ing), навигация или обработка событий не позволят мне добраться до места или в месте, где я могу получить от них данные

Кто-нибудь знает, как я могу это сделать? Кто-нибудь знает, как управлять вкладками из WebBrowser? Заранее спасибо, если вы делаете ...

1 Ответ

1 голос
/ 19 августа 2012

Попробуйте использовать функцию findcontrol на своей странице.Скорее всего, вам понадобится развернуть сам элемент управления вкладками, чтобы найти вкладку и содержащиеся в ней элементы управления.

...