使用_IECreate()创建新会话

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用_IECreate()创建新会话相关的知识,希望对你有一定的参考价值。

我有两个AutoIt脚本。两者都含有Global $oIE = _IECreate($myUrl, 1)。他们为同一个URL创建了两个IE窗口。

在IE中,当从“文件”菜单中选择“新会话”时,每个窗口都有自己的会话。但是同时使用两个不同的脚本文件,两个窗口都登录到同一个帐户。如何使用新会话打开每个IE窗口?

答案

会话与每个独特的iexplore.exe进程相关。每个必需的会话启动iexplore.exe的新实例(未经测试,无错误检查):

#include <IE.au3>

Global Const $g_sUrl = 'https://stackoverflow.com/'
Global       $g_aIE[2]

For $i1 = 0 To UBound($g_aIE, 1) -1    
    _IECreateSession($g_aIE[$i1], $g_sUrl)    
Next

Func _IECreateSession(ByRef $oIE, Const $sUrl)
    Local Const $iPID = ShellExecute('iexplore.exe', '-nosessionmerging about:blank')
    Local       $aWnd

    WinWait('Blank Page')       
    $aWnd = _WinAPI_EnumProcessWindows($iPID, True)
    $oIE  = _IEAttach($aWnd[1][1], 'hwnd')    
    _IELoadWait($oIE)
    _IENavigate($oIE, $sUrl)

    Return $iPID    
EndFunc

以上是关于使用_IECreate()创建新会话的主要内容,如果未能解决你的问题,请参考以下文章

新会话的Spring安全创建

为啥在我登录之前创建了一个新会话?

org.openqa.selenium.SessionNotCreatedException:无法创建新会话。 (原始错误:请求了一个新会话,但一个正在进行中)

如何防止 Jetty/GAE 为不同的上下文路径创建新会话?

React Fetch 到 Laravel API 创建新会话

Tomcat 为每个请求创建一个新会话