Использование .Net Web Control - Как установить значение в TextBox * INSIDE * IFRAME - PullRequest
0 голосов
/ 03 апреля 2009

Я пытаюсь использовать элемент управления .Net WebBrowser для входа на веб-сайт и сбора некоторых данных для меня. Я также использую ссылку на MSHTML (но мне все равно, подходит ваше решение или нет).

Когда я захожу на «нормальный» сайт - я создаю mshtml.HTMLDocument из .documment веб-браузера. Затем я создаю mshtml.FormElement и mshtml.HTMLInputElement, используя имя нужного текстового поля.

Затем я могу установить значение textBox.

Это выглядит примерно так:

    Dim myDoc1 As mshtml.HTMLIFrame = DirectCast(Me.WebBrowser.Document.DomDocument, mshtml.HTMLDocument)
    Dim myForm As mshtml.HTMLFormElement = DirectCast(myDoc1.forms.item(0), mshtml.HTMLFormElement)
    Dim myUserBox As mshtml.HTMLInputElement = DirectCast(myForm.item("user"), mshtml.HTMLFormElement)

    myUserBox.value = UserName

Моя проблема в том, что на некоторых веб-сайтах текстовое поле, которым я должен манипулировать, содержится внутри IFRAME. Примером будет https://servicing.capitalone.com/c1/login.aspx

Если моя программа переходит на этот сайт - она ​​не может найти текстовое поле для имени пользователя - потому что его нет. Существует только тег IFRAME с URL-адресом https://login.capitalone.com/loginweb/login/login.do'

Если я перехожу прямо на страницу login.do - сайт перенаправляет меня на страницу с ошибкой.

Как я могу ввести данные в текстовое поле UserName в этом IFRAME?

1 Ответ

2 голосов
/ 03 апреля 2009

Поскольку дочерний iframe, к которому вы пытаетесь получить доступ, поступает из домена, отличного от родительской страницы, вы не сможете получить доступ к элементам формы iframe из-за безопасности межкадрового сценария. См .: Доступ к фреймам в объектной модели управляемого документа HTML

Доступ к кадрам затруднен Дело в том, что управляемый HTML DOM реализует меру безопасности, известную как безопасность межкадровых сценариев. Если документ содержит FRAMESET с двумя или более КАДРОВ в разных доменах, эти рамки не могут взаимодействовать с одним другой. Другими словами, РАМКА, которая отображает контент с вашего веб-сайта не может получить доступ к информации в FRAME который размещает сторонний сайт, такой как http://www.adatum.com/. Это безопасность реализуется на уровне Класс HtmlWindow. Вы можете получить общая информация о раме хостинг другого веб-сайта, такого как его URL, но вы не сможете получить доступ его документ или изменить размер или расположение его хостинга FRAME или IFRAME.

...