问题描述
使用Edge浏览器,我想在不保持当前窗口会话的情况下打开新窗口和/或选项卡。
我可以像这样在Firefox上运行它: 打开新窗口-> window.open('mySiteURL','_blank','status = no,noopener = yes'); 打开新标签-> window.open('mySiteURL','_blank','noopener = yes');
我想在Edge浏览器上实现相同的效果。
解决方法
我将为要打开的每个新窗口或标签创建一个新驱动程序的缓冲区。
当您使用了JS window.open()函数后,
只需执行driverOfOldWindow.close()
,它就会关闭上一个窗口。
不要使用driverOfOldWindow.quit()
,因为它将关闭所有浏览器窗口,这不是您可能要执行的操作,因为WebDriver可能已经打开了您可能希望继续使用的其他窗口。
要管理标签,只需使用getAllWindowHandles()
函数并在要关闭的标签上调用close()
方法即可。
IE可以为不同窗口和选项卡中的内容创建多个内容处理。
如果您的应用程序托管一个Web浏览器控件,然后该控件启动一个完整的IE窗口,则可能是其他进程而不是您的应用程序进程正在请求您的新URL。结果,请求无法访问会话Cookie,因此会话显示为“丢失”。
(值得注意的是,同一进程树中的多个iexplore.exe进程实例可以互相共享会话cookie)。