【问题标题】:Multiple IE web-drivers : session lost when click link/button that opens a popup window多个 IE 网络驱动程序:单击打开弹出窗口的链接/按钮时会话丢失
【发布时间】:2019-04-04 06:17:13
【问题描述】:


我一起运行多个 (2) IE Web 驱动程序。(用于用户端和管理端测试) 当 InternetExplorer WebDriver 单击打开模式弹出窗口的链接/按钮时,登录页面在新窗口中打开(异常)。


当 ie webdriver 弹出窗口时,我可以在几分之一秒内看到浏览器应该加载的正确地址(在 URL 行中),但它立即更改为登录 url,并且需要输入用户名和密码。


我在this link 发现了同样的问题, 我在那里提出了解决方案,但我仍然没有解决问题,我得到一个输入窗口而不是预期的窗口。 see this screenshot

  • 我的 IE 版本是 11。
  • 我的 Selenium.WebDriver 是 3.141.0.0
  • 我的ie webdriver是IEDriverServer_x64_3.141.5


我的 InternetExplorerOptions:

 private static InternetExplorerOptions ieOptions = new InternetExplorerOptions
        {
            EnsureCleanSession = true ,
            EnableNativeEvents = true ,
            RequireWindowFocus = true ,
            EnablePersistentHover = true ,
            ForceCreateProcessApi = true ,
            BrowserCommandLineArguments = "-framemerging -private"
        };

我添加了注册表项:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FrameMerging\(DWORD)00000000

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\TabProcGrowth\(DWORD)00000000

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE\iexplorer.exe\(DWORD)00000000

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE\iexplorer.exe\(DWORD)00000000


已编辑:

通过 Deepak-MSFT 参考资料,我了解到该问题是由多个 IE 网络驱动程序实例引起的。

我还尝试通过在代码中添加ConfirmCleanSession = true选项来终止IE驱动程序,并通过从命令行运行以下语句手动(在运行测试之前);

taskkill / F / IM iexplore.exe / T
taskkill / F / IM IEDriverServer.exe / T


但一旦我将 2 个 IE 网络驱动程序设置为一起工作,它就没有帮助。

(当我尝试仅在一个驱动程序上运行测试时 - 效果很好!)


我将不胜感激帮助解决问题!

【问题讨论】:

  • link 不重复。这个链接是我的另一个问题,但它指的是另一个问题。我会把它的标题改成更清晰的。

标签: c# selenium selenium-webdriver webdriver internet-explorer-11


【解决方案1】:

这个问题是由于 IE 本身的怪癖以及驱动程序如何为浏览器创建弹出窗口。

解决方法是确保在您启动与驱动程序的会话时没有运行 iexplore.exe 进程。

参考资料:

(1)session cookie lost when click made to a link that opens a window with window.open()

(2)session cookie lost when click made to a link that opens a window with window.open()

【讨论】:

  • 这正是我的代码的问题!但是,我忘了在问题正文中提到我同时运行 2 个驱动程序实例(用于用户端检查和管理端),所以我的问题可能还没有解决。当我尝试仅在一个驱动程序上运行测试时,效果很好!
  • 我也试图通过在代码中添加 ConfirmCleanSession = true 选项来杀死 IE 驱动程序,也可以通过从命令行运行 kill 语句手动杀死 IE 驱动程序但是一旦我设置了 2 个驱动程序工作就没有帮助在一起。
  • 注意:我用我在评论中写的内容重新编辑了这个问题。我将不胜感激帮助解决问题!
  • 如果可能的话,您可以尝试一个接一个地运行两个驱动程序,而不是同时运行两个驱动程序。完成工作后,您可以关闭第一个驱动程序,然后启动第二个驱动程序。这是我目前唯一能解决的问题。
  • 我想过。但这是我最不喜欢的解决方案,因为它会改变我的情况。但实际上,这是目前唯一可行的。
【解决方案2】:

我的解决方案:

将测试用例分成两个测试:


第一次测试 -

为第一个站点(在我的情况下 - 管理员端)使用 IE 网络驱动程序,并为第二个站点(在我的情况下)并行使用另一个网络驱动程序(不会导致 Chrome 网络驱动程序等问题) - 管理方面)


第二次测试-

对第一个站点使用上面的另一个 web-driver,并为第二个站点并行使用 IE web-driver。


所以我介绍了两个站点在 IE 中的测试。

【讨论】:

    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多