1 (изменено: ypppu, 2014-10-20 22:09:31)

Тема: VBS: Имитация работы пользователя в браузере

Доброго времени суток всем!

у меня есть вопрос очень интересный, нигде не могу найти точный ответ на него, может быть кто-то сможете как то подсказать?

Я пишу скрипт на VBS который имитирует работу пользователя, он заходит на сайт через IE , вводит данные в поля ,авторизуется на сайте и т д. Это все работает.

Но далее мне необходимо сохранить содержимое страницы на которой я в данный момент находусь, для этого мне нужно определить текущий url\сылку на которой я нахожусь, а затем сохранить в файл по указанному пути. Файл создать и сохранить туда содержимое страницы по url введенному вручную не проблема, а определить url программно не получается. Прочитал про объект Location и его свойство href, которое содержит url текущий, но запись вида x = location.href не проходит, ругается на необявленный объект location.
Как правильно запросить текущий url?

Вот кусок кода который сохраняет из уже заданного url:

Код VBS:

sUrl = "сайт"
XMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "GET",sUrl, False
oXMLHTTP.Send
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile "D:\saver.txt", True
Set f = fso.OpenTextFile("D:\saver.txt", 2, True)

2

Re: VBS: Имитация работы пользователя в браузере

Jonson1992
Что-то из этой области: objIE.ExecWB 3, 2, "C:\Path\My.html"

3

Re: VBS: Имитация работы пользователя в браузере

Flasher пишет:

Jonson1992
Что-то из этой области: objIE.ExecWB 3, 2, "C:\Path\My.html"

Таким образом он просто сохраняет всю страницу в указанную дикторию? Или сохраняет адрес URL?
И как правильно объявить, к примеру

Set objForm = objIE.Document.forms(0)

, а далее Ваш пример?

4 (изменено: Flasher, 2014-10-22 15:51:56)

Re: VBS: Имитация работы пользователя в браузере

Jonson1992
По логике, должен сохранять совместно с папкой.
Разумеется, сперва нужно залогиниться по .click, потом пройти цикл типа

Do : WScript.Sleep 100 : Loop Until Not .Busy And .ReadyState = 4

Но, похоже, что обычный Save не работает в отличии от Save_as (objIE.ExecWB 4, 2, "My.html"), и от диалога тогда не избавиться. Если у кого-то нет мыслей по этому поводу, то придётся использовать сторонний компонент.
Если же нужен html без иного контента, то достаточно после проверки на готовность добавить:

CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\saver.htm",2,True,-1).Write objIE.Document.body.outerHTML
objIE.ExecWB 45, 2 : objIE.Quit ' Выход

5

Re: VBS: Имитация работы пользователя в браузере

Jonson1992,

Jonson1992 пишет:

Как правильно запросить текущий url?


Option Explicit

Const READYSTATE_COMPLETE = 4

With CreateObject("InternetExplorer.Application")
    'Переход на нужный URL
    .Navigate "http://www.google.ru"
    'Ожидание окончательной загрузки
    Do While .Busy And .readyState <> READYSTATE_COMPLETE
        WScript.Sleep 100
    Loop
    'Получение текущего URL
    MsgBox .LocationURL
End With

Использовать MSDN не возбраняется.

http://msdn.microsoft.com/en-us/library … s.85).aspx

http://msdn.microsoft.com/en-us/library … s.85).aspx

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

6

Re: VBS: Имитация работы пользователя в браузере

Всем спасибо , разобрался!