JAVA:https://www.cnblogs.com/feifeidxl/p/4551363.html
java的处理可以参考此博客,实践可行,使用的selenium版本为3.141,ie版本为11.630.19041.0
Python:
官方文档中https://www.selenium.dev/documentation/webdriver/capabilities/internet_explorer/ 提供了一个options的选项,但是个人测试发现没有起作用,仍然会报Internet Explorer.Protected Mode must be set to the same value(enabled or disabled) for all zones.
注意 需要使用selenium 3.x+以上的版本,低版本的selenium对ie还没有支持options。
因此在python中想要解决此问题,只能老老实实的修改ie浏览器的安全模式。自己测试时直接打开浏览器修改即可,但是当有很多台windows需要修改时,这样就太麻烦了。
因此可以使用python直接修改注册表的值,来达到手动修改的效果,代码如下:
from winreg import *
def Enable_Protected_Mode():
"""
# 0 is the Local Machine zone
# 1 is the Intranet zone
# 2 is the Trusted Sites zone
# 3 is the Internet zone
# 4 is the Restricted Sites zone
# CHANGING THE SUBKEY VALUE "2500" TO DWORD 0 ENABLES PROTECTED MODE FOR THAT ZONE.
# IN THE CODE BELOW THAT VALUE IS WITHIN THE "SetValueEx" FUNCTION AT THE END AFTER "REG_DWORD".
"""
try:
keyVal = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1' # 这里的1,2,3,4分别对应安全模式中的四个选项,只要依次将四个选项全部操作一遍即可。
key = OpenKey(HKEY_CURRENT_USER, keyVal, 0, KEY_ALL_ACCESS)
SetValueEx(key, "2500", 0, REG_DWORD, 0)
except Exception:
print("Failed to enable protected mode")
这样就只需在使用selenium启动ie浏览器前先使用上述代码修改ie浏览器的安全模式就可以了。