Top-office11.ru

IT и мир ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Internetexplorer application авторизация

InternetExplorer object

Controls an instance of Windows Internet Explorer through automation.

Members

The InternetExplorer object has these types of members:

Events

The InternetExplorer object has these events.

Fires before navigation occurs in the given object (on either a window or frameset element).

Fires when the enabled state of a command changes.

Fires when a document is completely loaded and initialized.

Fires when a navigation operation begins.

Fires when a navigation operation finishes, is halted, or fails.

Fires after a navigation to a link is completed on either a window element or a frameSet element.

Fires after a navigation to a link is completed on a window element or a frameSet element.

Creates a new process to handle the navigation.

Fires when a new window is to be created.

Fires when a new window is to be created.

Raised when a new window is to be created. Extends NewWindow2 with additional information about the new window.

Fires when the FullScreen property is changed.

Fires when the MenuBar property is changed.

Fires before the Internet Explorer application quits.

Fires when the StatusBar property is changed.

Fires when the TheaterMode property is changed.

Fires when the ToolBar property is changed.

Fires when the Visible property of the object is changed.

Fires when a print template is instantiated.

Fires when a print template is destroyed.

Fires when the progress of a download operation is updated on the object.

Fires when the PutProperty method of the object changes the value of a property.

Fires when the status bar text of the object has changed.

Fires when the title of a document in the object becomes available or changes.

Fires when the visibility state of a content window, such as the browser window or a tab, changes.

Methods

The InternetExplorer object has these methods.

EventDescription
BeforeNavigate

Executes a command and returns the status of the command execution using the IOleCommandTarget interface.

Gets the value associated with a user-defined property name.

Navigates backward one item in the history list.

Navigates forward one item in the history list.

Navigates to the current home or start page.

Navigates to the current search page.

Navigates to a resource identified by a URL or to a file identified by a full path.

Navigates the browser to a location that might not be expressed as a URL, such as a PIDL for an entity in the Windows Shell namespace.

Associates a user-defined name/value pair with the object.

Queries the object for the status of commands using the IOleCommandTarget interface.

Reloads the file that is currently displayed in the object.

Reloads the file that is currently displayed with the specified refresh level.

Cancels a pending navigation or download, and stops dynamic page elements, such as background sounds and animations.

Properties

The InternetExplorer object has these properties.

MethodDescription
ExecWB

Sets or gets a value indicating whether the address bar of the object is visible or hidden.

Gets the automation object for the application that is hosting the WebBrowser Control.

Gets a value that indicates whether the object is engaged in a navigation or downloading operation.

Gets an object reference to a container.

Gets the automation object of the active document, if any.

Retrieves the fully qualified path of the Internet Explorer executable.

Sets or gets a value that indicates whether Internet Explorer is in full-screen mode or normal window mode.

Sets or gets the height of the object.

Sets or gets the coordinate of the left edge of the object.

Retrieves the path or title of the resource that is currently displayed.

Gets the URL of the resource that is currently displayed.

Sets or gets a value that indicates whether the Internet Explorer menu bar is visible.

Sets or gets a value that indicates whether the object is operating in offline mode.

Gets the parent of the object.

Retrieves the system folder of the Internet Explorer executable.

Gets the ready state of the object.

Sets or gets a value that indicates whether the object is registered as a top-level browser window.

Sets or gets a value that indicates whether the object is registered as a drop target for navigation.

Sets or gets a value that indicates whether the object can be resized.

Sets or gets a value that indicates whether the object can display dialog boxes.

Sets or gets a value that indicates whether the status bar for the object is visible.

Sets or gets whether the object is in theater mode.

Sets or gets whether toolbars for the object are visible.

Sets or gets the coordinate of the top edge of the object.

Gets a value that indicates whether the object is a top-level container.

Gets the user type name of the contained document object.

Sets or gets a value that indicates whether the object is visible or hidden.

Sets or gets the width of the object.

Remarks

Windows Internet Explorer 8. On Windows Vista, to create an instance of Internet Explorer running at a medium integrity level, pass CLSID_InternetExplorerMedium (defined in exdisp.idl) to CoCreateInstance. The resulting InternetExplorerMedium object supports the same events, methods, and properties as the InternetExplorer object.

Examples

The following example uses CreateObject in Visual Basic to launch an instance of Internet Explorer.

The following C# example launches an instance of Internet Explorer and navigates to a Web page. The code also demonstrates how to create an event handler to listen for the BeforeNavigate2 event. The project requires a reference to the Microsoft Internet Controls (SHDocVw) type library.

Авторизация на веб-сервере средствами VBA

Функция ConnectServer предназначена для автоматизации авторизации на сайте, выполняемой путем заполнения полей с логином и паролем, и нажатием кнопки «Отправить» (т.н. «форма входа на сайт»)

Пример использования функции:

Код функции ConnectServer:

  • 31532 просмотра

Комментарии

Удалите эти строки, — к данному примеру они отношения не имеют, а необходимый код (этих функций) у меня утерян.
Суть функции, — в авторизации, и возврате объекта, ссылающегося на документ IE

Подскажите, какие библиотеки надо подключать, все эти вещи компилятор не пропускает SetSelectElementValue, SetSelectElementValue IEdoc, SetInputElementValue IEdoc

Нет
Код использует компоненты Windows, которых на Mac просто нет
Для Mac можно написать аналогичный по функционалу код, — но он будет совсем другим

Здравствуйте! подскажите можно ли исправить этот код для работы на macOS?

СПАСИБО. И за пример и за оперативность! Я вам очень благодарна!

Выложил пример нужного вам кода (загрузка файла с авторизацией):
http://excelvba.ru/code/DownloadFileWithAuth

Спасибо, за ответ! Буду с нетерпением ждать, надеюсь всё таки способ найду, с авторизацией же разобралась. Решение уже близко, по крайней мере, хочется в это верить.

да, есть способ скачать файл с авторизацией
но там совсем другой код, и он сложнее
кроме того, по каждый сайт авторизация выполняется по-разному
Навскидку не могу дать пример кода.
Если будет время, — как-нибудь опубликую отдельной статьёй.

Добрый день спасибо за ваши подсказки, благодаря вашей статье и ещё на одном сайте, настроила авторизацию на сайт, переходы по ссылкам работают, да вот беда когда начинаешь закачивать файлы по средством:
Function DownloadFile(FromPathName, ToPathName) As Boolean
DownloadFile = URLDownloadToFile(0, FromPathName, ToPathName, 0, 0) = 0
End Function

URL$ = «»
FileName$ = «»
IE.Navigate URL$
Set ieDoc = IE.Document: DoEvents: DoEvents
DownloadFile URL$, FileName$.
Качается файл с содержимым окна о не пройденной авторизации, может подскажете как обойти это? Может есть ещё какой то метод?

Что могу сказать:
1) в функции ConnectServer куча ошибок, — что за символы «;» появились?
вы разве не видите, что VBA эти строки красным подсвечивает?
2) функция ConnectServer не имеет никакого отношения к веб-запросу (QueryTables.Add)
так что совмещение этих 2 способов подключения к сайту ничего не даст
3) код пишется под конкретный сайт
чтобы протестировать его, надо знать адрес конкретного сайта, и действующие логин с паролем
4) хотите готовый макрос? Оформляйте заказ, и прикрепляйте пример результата.
Работы тут много, — там что это не бесплатно.

Прошу помощи у Гуру. Не могу понять, где ошибка закралась. Целиком и пошагово скрипт отрабатывает без ошибок, в Excel’е создается подключение и диапазон, в который почему-то переносится только 2 пустые ячейки. Предыстория: есть портал, необходимо на нем авторизоваться и затем по некоторому адресу забрать в Excel табличку с некоторым id. Вот код:

попробовал использовать этот код для своих целей, поля авторизации заполняет правильно, а вот нажать на кнопку не получается.
Помогите, как из VBA нажать на кнопку «войти» на сайте:
www_heroeswm_ru

у меня почему то не работает команда submit. тоесть все данные вбиваются но приходиться нажимать вручную!

Public Const URL_Login = «https://www.atsenergo.ru/auth» ‘ ñòðàíèöà âõîäà
Public Const URL_LoginOK = «https://www.atsenergo.ru/reporting/personal/» ‘ ñþäà ïîïàäåì, åñëè âõîä óäàëñÿ
Public Const URL_main = «https://www.atsenergo.ru/reporting/personal/eur/sell_norem/20130922» ‘ à ýòà ñòðàíèöà ñàéòà íàì íóæíà äëÿ ðàáîòû

Sub ÏðèìåðÈñïîëüçîâàíèÿ_ConnectServer()
‘ Dim IE As SHDocVw.InternetExplorer, IEdoc As HTMLDocument
On Error Resume Next
Set IE = ConnectServer ‘ àâòîðèçóåìñÿ íà ñåðâåðå

Set IEdoc = IE.Document ‘ ïîëó÷àåì ññûëêó íà äîêóìåíò

IE.Quit ‘ çàêðûâàåì áðàóçåð
End Sub

Function ConnectServer() As Object
‘ ôóíêöèÿ ïðåäíàçíà÷åíà äëÿ àâòîðèçàöèè íà ñàéòàõ
‘ (ââîä ëîãèíà è ïàðîëÿ ÷åðåç âåá-èíòåðôåéñ)
‘ Âîçâðàùàåò îáúåêò òèïà InternetExplorer ñ çàãðóæåííîé ñòðàíèöåé ñàéòà, ãäå ìû àâòîðèçîâàëèñü
‘ ÍÅÍÓÆÍÛÅ ÑÒÐÎÊÈ ÊÎÄÀ ÇÀÊÎÌÌÅÍÒÈÐÎÂÀÍÛ

Login$ = «лялялял»: Password$ = «ляляля » ‘ óêàæèòå çäåñü ëîãèí è ïàðîëü äëÿ ñàéòà
On Error Resume Next: Err.Clear
‘ Dim pi As New ProgressIndicator
‘ pi.Show «Îòïðàâêà îáúÿâëåíèé íà ñàéò ðèýëòîðñêîãî àãåíñòâà. »
Pi.StartNewAction 5, 10, «Óñòàíîâêà ñîåäèíåíèÿ ñ ñåðâåðîì . »
Set IE = CreateObject(«InternetExplorer.Application»)
‘ IE.Visible = True ‘ äëÿ òåñòèðîâàíèÿ
Set IE = CreateObject(«InternetExplorer.Application»)
IE.Visible = True ‘ äëÿ òåñòèðîâàíèÿ
IE.Silent = True ‘ïîäàâëåíèå âñïëûâàþùèõ îêîí Explorer

‘ pi.StartNewAction 10, 50, «Çàãðóçêà ñòðàíèöû àâòîðèçàöèè . «, , , 10
IE.Navigate URL_Login
‘ æä¸ì, ïîêà ñòðàíèöà çàãðóçèòüñÿ
‘ t = Timer: While IE.Busy Or (IE.ReadyState <> 4)
‘ DoEvents: If Timer — t > 0.1 Then pi.SubAction: t = Timer
‘ Wend: DoEvents
While IE.Busy Or (IE.ReadyState <> 4): DoEvents: Wend

‘ pi.StartNewAction 50, 80, «Àâòîðèçàöèÿ íà ñåðâåðå. «, , , 15

Set IEdoc = IE.Document: DoEvents: DoEvents

‘ çàïîëíÿåì ïîëÿ ñ ëîãèíîì è ïàðîëåì
IEdoc.getElementsByName(«j_usercode»).Item(0).Value = Login$
IEdoc.getElementsByName(«j_username»).Item(0).Value = Login$
IEdoc.getElementsByName(«j_password»).Item(0).Value = Password$
‘ è îòïðàâëÿåì äàííûå ôîðìû íà ñåðâåð

IEdoc.getElementsByName(«action»).Item(0).submit
IE.Visible = True ‘ äëÿ òåñòèðîâàíèÿ
IE.Silent = True ‘ïîäàâëåíèå âñïëûâàþùèõ îêîí Explorer

If Err Then MsgBox «Íå óäà¸òñÿ çàãðóçèòü ñòðàíèöó», vbCritical: End
‘ æä¸ì, ïîêà ñòðàíèöà çàãðóçèòüñÿ
‘ t = Timer: While IE.Busy Or (IE.ReadyState <> 4)
‘ DoEvents: If Timer — t > 0.1 Then pi.SubAction: t = Timer
‘ Wend
While IE.Busy Or (IE.ReadyState <> 4): DoEvents: Wend

If IE.LocationURL <> URL_LoginOK Then
MsgBox «Ëîãèí èëè ïàðîëü íåâåðíû!», vbCritical, «Îøèáêà àâòîðèçàöèè»: Pi.Hide: End
End If

‘ pi.StartNewAction 80, 100, «Çàãðóçêà ñòðàíèöû îòïðàâêè îáúÿâëåíèé . «, , , 10
IE.Navigate URL_main
‘ æä¸ì, ïîêà ñòðàíèöà çàãðóçèòüñÿ
‘ t = Timer: While IE.Busy Or (IE.ReadyState <> 4)
‘ DoEvents: If Timer — t > 0.1 Then pi.SubAction: t = Timer
‘ Wend
While IE.Busy Or (IE.ReadyState <> 4): DoEvents: Wend

Set ConnectServer = IE
‘ pi.Hide
End Function

Нашел, вопрос решается с помощью кода после создания объекта IE:

Set IE = CreateObject(«InternetExplorer.Application»)
IE.Visible = True ‘ для тестирования
IE.Silent = True ‘подавление всплывающих окон Explorer

По завершения работы процедуры регистрации, выходит стандартное окно: «открыть или сохранить этот файл?» Где-то в интернете видел что это стандартное окно блокнота, как согласиться на сохранение файла?

В какой книге можно подробнее почитать о получении/передаче информации в интернете?

При обработки этого кода выходит сообщение «Отображать только безопасное содержимое веб-старниц?». Как с ним бороться если нет возможности отключить это всплывающее окно в IExplorer?

Обратите внимание на эти строки кода:

Названия полей login_r, passwd_r и формы login_form — подходят только для моего примера.
В вашем случае названия полей будут другие
(и, скорее всего, надо предварительно обработать ошибку отсутствия сертификата)

Это был лишь пример авторизации на сайте — под конкретный сайт код нужно дорабатывать.

Kazun

Заметки о PowerShell.

Archive for the ‘InternetExplorer’ Category

Авторизация на форуме на примере forum.oszone.net используя PowerShell?

Рассмотрим 2 метода:

Учетом успешного выполнения скрипта, будет вывод сообщения – “Ваш последний визит был: время”

Определим, какие поля нам требуется заполнить, достаточно просто.

В поля “Имя Пользователя” и “Пароль” подставим значения ,и посмотрим, какие поля требуют заполнения.

Как видно выше для заполнения нужны поля vb_login_username и vb_login_password.

Определим, какие поля нам требуется заполнить у формы.

Требуется нам заполнить все поля или достаточно определенных. В этом нам поможет Fiddler .

  • Запускаем Fiddler
  • Запускаем любой браузер ( логирование командлета Invoke-WebRequest тоже поддерживается)
  • Переходим на сайт
  • Заполняем поля , нажимаем “Войти”
  • Смотрим Post запрос

Поле vb_login_password – пустое, но вычисляется md5 hash пароля.

Для ASCII символов, если пароль в Unicode, данный метод не подойдет. Какой алгоритм преобразования

Вычислим поле vb_login_md5password для Unicode , на примере – Привет:

Вычислим поле vb_login_md5password_utf для Unicode , на примере – Привет:

При использовании полей vb_login_md5password и vb_login_md5password_utf, поле vb_login_password – не заполняем.

Но можно не утруждать себя данными алгоритмами, а просто заполнить поля vb_login_username и vb_login_password.

В конечном итоге получим вывод:

Как заполнить frame форму и нажать на ней отправить программно?

Powershell должен быть запущен с параметром -STA.

Для примера воспользуемся сайтом — Enter.UniCredit.В исходном коде мы видим набор frames.

Фреймы в HTML позволяют авторам представлять документы в нескольких разделах, которые могут быть независимыми или вложенными окнами. Это обеспечивает дизайнерам способ оставлять некоторую информацию видимой, в то время как другая информация прокручивается или заменяется. Например, в одном окне в одном фрейме может отображаться статический баннер, во втором навигационное меню, а в третьем — сам документ, который можно прокручивать или переходить к другому с помощью навигации во втором фрейме.
Ни у одного frame,нет каких-либо полей для заполнения.Основное меню реализовано,с помощью frame — F_HLP.Который и скрывает форму(MForm) для заполнения.

Основная проблема, как добраться до этой формы.Для этого мы подменяем параметр src. Здесь мы и видим, куда перенаправляется frame.

После этого нам будет доступна MForm и уже не составляет труда пройти авторизацию.

Выполняем скрипт и получаем ответ Success или Fail.

Авторизация на форуме с помощью PowerShell, на примере http://www.guitarplayer.ru.

Для авторизации на форуме воспользуемся COM объектом InternetExplorer.Application.Для навигации используем метод Navigate.Для получения всех форм на странице,воспользуемся свойством Forms.

Как видим у нас две формы,форму frmLogin мы и будем заполнять.После заполнения полей и нажатия кнопки «Войти» ,мы переходим в заданную тему и создаем сообщение.

internetexplorer.application hangs on readystate=1 in VBA

I have an Excel VBA application which uses internetexplorer.application to explore an application. Starting around 2/21/15, this application started failing on readyState being stuck on 1 forever rather than ultimately migrating to 4. This only occurred when navigating the second (or further) link. The first URL works fine.

The machine with the problem is a Core i5 M520 CPU (4 CPU) running 64-bit Windows 7.

Another machine with a Core 2 Duo T9400 running 32-bit Windows 7 executes the code without a problem.

This feels like some sort of race condition but I am not sure if I have to do something special under 64-bit windows.

I am using Internet Explorer 11, Windows 7, and Excel 2003 (or 2013). Any idea on what is going wrong?

3 Answers 3

«Funny thing», sometimes the loop objIE.readyState <> 4 works, sometimes it doesn’t and hangs with readyState = 1 ( READYSTATE_LOADING ) even though the browser window is obviously finished loading.

It works best if I add a Sleep/DoEvents-loop (>500ms) after navigate and before doing anything else with the IE-object:

Hope that helps!

I’d say all the next as a comment, but have no comment privilige.

(1) You say that it’s stuck on readystate 1. Perhaps a silly question, but, how do you actually know that?

(2) It helps to disable irrelevent things when debugging. So comment-out the PeruseTheDocument call, and try again (on the off-chance that it’s something to do with that procedure).

(3) Not the cause of your problem, but: while a document is loading, IE.BUSY is TRUE for most but not all of the time. It actually does go FALSE occasionally before the document has fully loaded. So waiting on IE.BUSY=FALSE is generally not correct. In your case that won’t make any difference, because then you wait for readystate 4. But I’d remove the BUSY check, since it serves absolutely no purpose whatever, and it’s based on a misunderstanding of what that property actually means.

(Geez this interface makes things hard!! I have to make this an answer, because it’s too long for a comment.)

Your problem doesn’t occur for me.

I don’t have access to VBA, so I converted your code to VBScript. The difference is irrelevant to the issue at hand. Copy & paste my code into a file with .VBS extension. Double-click to run, and you’ll see each page go ready in turn.

Note that VBScript variables are declared untyped, never eg. «As Object». I also made objIE local to procedure Test_IE_Interface(), then pass it explicitly to LoadAPage() — that’s better design than using a global (but irrelevant to the problen at hand).

My conclusion is that either (1) you’re inadvertantly not actually showing us the actual code that is actually running; or (2) there’s something wrong with your network stack or internet connectivity. Personally I doubt it is (2).

Try my VBS code, see if it works, then convert it back to VBA and see what happens.

Читать еще:  Лучший браузер для слабых пк
Ссылка на основную публикацию
Adblock
detector
PropertyDescription