WebBrowser.DocumentText - PullRequest
       2

WebBrowser.DocumentText

1 голос
/ 29 февраля 2012

Я просто потратил 2 часа, пытаясь выяснить, что не так с моим кодом. Вот что я сделал:

        if (browser.DocumentText.Contains("Something"))
        {
            [do somwthing]
        }

Я отобразил страницу в элементе управления WebBrowser непосредственно перед выполнением этой команды, поэтому я точно знаю, что текст есть, но он все равно возвращает false.

Я провел некоторую отладку и обнаружил, что browser.DocumentText содержит некоторую странную форму HTML.

Теперь я мог бы пройтись по меткам в документе и получить оттуда текст, но есть ли способ сделать это, посмотрев на HTML?

1 Ответ

1 голос
/ 08 марта 2012

Позвольте мне предоставить вам лучший способ сделать это, не используя .DocumentText и не анализируя все эти строки, эрк.

Если wbMain является вашим элементом управления WebBrowser1, выполните следующие действия.

Во-первых, вам нужно получить ссылку на ваш элемент, скажем, вы хотите получить доступ к первой ссылке <A>, на своей странице вы можете просмотреть все, если хотите.

Это в VB, но то же самое в C #, только другой синтаксис.

Dim i As Integer
Dim aElement As HTMLAnchorElement = wbMain.Document.All.getElementByTagName("A")(0)

For i = 0 To aElement.attributes.length - 1
  MsgBox aElement.attributes.item(i).name & "=" & aElement.attributes.item(i).value
Next i

Это перебирает все атрибуты и отображает его в MSGBOX в формате name=value.

Если вы хотите получить его по имени (имени атрибута), просто позвоните, используя aElement.getAttribute("target"), чтобы получить целевое значение атрибута из ссылки.

Если вы хотите подтвердить, что получили правильный объект / элемент, просто введите aElement.outerHTML, чтобы получить полный HTML-код только для этого элемента.

Поскольку я использую версию до .NET, смело меняйте объявление с HTMLAnchorElement на IHTMLAnchorElement, если это доставляет вам проблемы, конечно, вы можете просто использовать IHTMLElement, если вы хотите просмотреть все элементы на странице, затем все, что вам нужно сделать, это wbMain.Document.All (0) для первого элемента на странице или цикл до .All.length - 1, чтобы пройти все. Помните, что если вы используете вложенные циклы For, не используйте i дважды, используйте j для одного из них:).

Дайте мне знать, если это ответит на ваш вопрос или если я сделаю еще что-нибудь, чтобы помочь вам с вашей проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...