2016-12-28 69 views
1

我注意到,当我启动IE在SeleniumWebdriver与正确的方法,以消除-noframemerging选项

var ieoptions = new InternetExplorerOptions() 
{ 
    EnablePersistentHover = false, 
    EnsureCleanSession = true, 
    RequireWindowFocus = true, 
}; 

我在IE浏览器的命令行有这样的-noframemerging标志。我不希望这个标志 一些挖我设法找到我似乎可以把它拿出来,加入

ForceCreateProcessApi = true, 
BrowserCommandLineArguments = "-framemerging" 

之后,但这样做既与随行工作注册表编辑器为

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main = 0 

我d更喜欢让我的IE在手动和自动化测试中以同样的方式工作 - 即不要在玩游戏过程中搞乱数量。那么这里有一个更简单的解决方案吗?我发现很难理解,为什么-noframemerging标志是由IEServerDriver打开的

回答

1

不,这里没有更简单的解决方案。 IEDriverServer.exe不会修改用于启动IE的命令行。如果交换机正在被添加到命令行中,它将通过Windows IELaunchURL API完成,这是默认情况下驱动程序启动浏览器以适应保护模式的内容。对“命令行”的使用进行“控制”的方法是使用CreateProcess API,并且已经发现如何使驱动程序执行该操作。 “控制”是故意放在这里的恐慌报价,因为不幸的是,除非您使用注册表项,否则CreateProcess对IE不可靠。此外,IE浏览器没有用户配置文件的概念,并且您希望保持浏览器对非WebDriver使用的行为正是为什么驱动程序不会为您设置注册表项。