【问题标题】:Webdriver 3.14 IE11: session lost when click link/button that opens a window/popupWebdriver 3.14 IE11:单击打开窗口/弹出窗口的链接/按钮时会话丢失
【发布时间】:2019-03-31 05:19:54
【问题描述】:

我的 Internet Explorer 选项:

var optionsIE = new InternetExplorerOptions();                        
optionsIE.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
optionsIE.EnsureCleanSession = true;

string IE_DRIVER_PATH = SolutionDirectory + @"\\..\\packages\\Selenium.WebDriver.IEDriver.3.14.0\\driver\\";

InternetExplorerDriverService service =
InternetExplorerDriverService.CreateDefaultService(IE_DRIVER_PATH);
service.Port = port; 
driver = new InternetExplorerDriver(service, optionsIE);

当点击打开模式弹出窗口的链接/按钮时,新窗口需要登录和密码(不正常):

虽然我期待另一个结果窗口。

如果我使用 ff61,我会采用正确的窗口形式:

【问题讨论】:

  • 当您评论以下行时发生了什么? optionsIE.EnsureCleanSession = true;
  • @Selcuk Ayhan,@Dillion:当我删除此指令时,会显示相同的弹出窗口并显示相同的消息:optionsIE.EnsureCleanSession = true;

标签: session modal-dialog webdriver popup internet-explorer-11


【解决方案1】:

问题在于用于启动 IE 的命令行 –noframemerging

其实这个参数就是设置几个进程之间的IE会话。 当我单击打开弹出窗口的按钮时,已创建一个新进程。

如果我在同一个手动测试中使用 IE,我只需要两个进程。

我尝试设置

ForceCreateProcessApi = true,
BrowserCommandLineArguments = "-framemerging"

但它不起作用。对于防止 Internet Explorer 将新框架进程合并到新系统进程中,解决方法是通过注册表项设置此选项:

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

该功能在值设置为 (DWORD) 00000001 时启用,在值设置为 (DWORD) 00000000 时禁用。默认情况下启用。

【讨论】:

    【解决方案2】:

    我想这个问题与the EnsureCleanSession property 有关。 将此属性设置为 true 时,它​​将清除 Internet Explorer 的所有实例的系统缓存,即使是在驱动实例启动时已经运行的那些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多