我注意到当我在SeleniumWebdriver中使用
启动IE时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
我更喜欢让我的IE在手动和自动测试中以相同的方式工作 - 即不要搞乱游戏中的进程数量。那么这里有更简单的解决方案吗?我发现很难理解为什么IEServerDriver打开-noframemerging标志
答案 0 :(得分:2)
不,这里没有更简单的解决方案。 IEDriverServer.exe
不会修改用于启动IE的命令行。如果将一个开关添加到命令行,它将由Windows IELaunchURL
API完成,这是驱动程序默认使用的启动浏览器以便能够容纳保护模式的API。如何控制"使用什么命令行是使用CreateProcess
API,并且您已经发现了如何让驱动程序执行此操作。 "控制与#34;故意在这里引用恐慌引用,因为不幸的是,除非您使用注册表项,否则CreateProcess
对IE不可靠。此外,IE没有用户配置文件的概念,并且您希望维护浏览器的非WebDriver使用行为,这正是驱动程序没有为您设置注册表项的原因。 / p>