Что нового

[Окна, Диалоги] Разные сессии IE

fortages

Новичок
Сообщения
81
Репутация
3
Добрый день.

Нужно держать двоих пользователей "вечно онлайн". В случае с одним пользователем работает (F5 нажимается раз в 5 минут). Но как быть с двумя?
Например, пользователь А зашел на сайт. Поддерживается автообновление.
Если нужно сделать
Код:
_IECreate($sUrl)
для пользователя В, откроется адрес сайта с личным кабинетом пользователя А. Как запустить IE в два разных "потока"? Чтоб он не запоминал сессию пользователя А и заходил на сайт как в первый раз? Что посмотреть?
Читала эту тему http://autoit-script.ru/index.php?topic=16246.0, куки удалять пробовала, не помогло, сессию все равно помнит. По итогу должно быть два разных окна IE, в которых два пользователя, каждый со своей сессией.
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
Garrett спасибо за ответ.
Мне конечно ужасно стыдно, но... Не могу понять, как работает Ваш скрипт?

Создаются три разных окна (процесса), не связанных друг с другом
Код:
$iPID1 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID1)


дальше пустота в моей голове не позволяет вникнуть не знаю

Но вот
Код:
_IENavigate($oIE1, "ya.ru")
перехода на яндекс не происходит, переход идет на домашнюю страницу во всех трех окнах.

Или даже если просто сделать
Код:
#include<WinAPIProc.au3>
#include<Array.au3>
#include<IE.au3>

$oIE = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge")
{скрипт авторизации}
, то открываются два окна - одно с домашней страницей, второе, в котором работает скрипт авторизации. Но получается, что он работает не в том окне, которое с ключом -nomerge запускалось
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Какая версия IE?
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
Версия 8.0

OffTopic:
Читала, что есть какая-то функция TabProcGrowth=0, тоже с сессиями вроде бы связано. Это не то, да?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
fortages [?]
У меня IE8 под XP работает нормально. :scratch:


Добавлено:
Сообщение автоматически объединено:

Попробуйте тогда с FireFox, если он у вас установлен.
Код:
$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") 
ProcessWait($iPID1)
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
Garrett сказал(а):
У меня IE8 под XP работает нормально
А я под семеркой запускала, может из-за этого...

Попробуйте тогда с FireFox, если он у вас установлен.
Код:
$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") 
ProcessWait($iPID1)
Я конечно извиняюсь, но опять не понимаю чего-то... Написано же \Program Files\FireFox\firefox.exe -p -no-remote, но у меня почему-то запустился IE.

Сделала два файла A.au3 и B.au3
При запуске первого - открылся IE, пользователь зашел.
При запуске В.au3 - открылся снова IE, открылся сайт, на котором авторизован пользователь А, а для авторизации должна ведь быть"чистая" форма ввода логина-пароля (http://autoit-script.ru/index.php?topic=4982.msg107814#msg107814)
Почему-то данные с предыдущего захода на сайт сохранились. :-\

FireFox установлен, работает как второй браузер, часто пользуюсь.


Добавлено:
Сообщение автоматически объединено:

Странно еще и то, что в самом коде авторизации у меня есть строчка
Код:
$oIE = _IECreate($sUrl)

Так вот если сделать
Код:
$iPID1 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") 
ProcessWait($iPID1)
$oIE = _IECreate($sUrl)
{остальной скрипт авторизации}

То открываются два разных IE. Один с домашней страницей (так понимаю, что этот тот, который с -nomerge) и второй, в котором авторизация. Видимо тот, который вызвала функция
Код:
_IECreate($sUrl)


А вот если
Код:
$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") ;ProcessWait($iPID1)
$oIE = _IECreate($sUrl)

Мало того, что запускается IE вместо Firefox, так еще и работает в одном окне... Хотя стоп. Из-за
Код:
]_IECreate($sUrl)
у меня IE и появился, получается. А firefox вообще не сработал?

На всякий случай -
Код:
#include<WinAPIProc.au3>
#include<Array.au3>
#include<IE.au3>

$iPID1 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") 
ProcessWait($iPID1)

;$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") 
;ProcessWait($iPID1)

$sLogin = 'username'
$sPass = 'userpass'
$sUrl = 'http://www.site.com/login'


$oIE = _IECreate($sUrl)
$oForm   = _IEFormGetObjByName($oIE,"form_login")
$oLogin = _IEGetObjById($oIE, 'username')
$oPass = _IEGetObjByName($oIE, 'password')
$oCheck = _IEGetObjById($oIE, 'rememberMe')
$oButton = _IEGetObjById($oIE, 'loginButton')



_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
_IEAction($oCheck, 'click')
_IEAction($oButton, 'click')
_IELoadWait($oIE)

$oInputs = _IETagNameGetCollection ($oForm, 'input')
If Not IsObj($oInputs) Then
    Msgbox(0,0,'Пользователь авторизован')
    
Else
    
    For $oInput In $oInputs
	If String($oInput.type) = 'submit' And String($oInput.value) = 'Вход' Then
        
            _IEAction($oInput, 'click')
            _IELoadWait($oIE)
            ExitLoop
        EndIf
    Next
EndIf
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
fortages
Убирите ; из начала этих строк
Код:
;$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") 
;ProcessWait($iPID1)

Чтобы получилось вот так:
Код:
$iPID1 = Run("C:\Program Files\FireFox\firefox.exe -p -no-remote") 
ProcessWait($iPID1)

Знак ; означает комментарий в коде.
Обзор языка - комментарии
Точка с запятой ( ; ) - это комментирующий символ. Весь текст, идущий после символа ; является комментарием и будет проигнорирован интерпретатором/компилятором.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
fortages [?]
открываются два разных IE
Обратите внимание, что в том примере (который "Ответ #7") используется функция
Код:
_IEAttach()
А вы используете
Код:
_IECreate()
т.е. запускаете отдельную копию IE, вместо подключения к существующему экземпляру.
 
Верх