selenium IE保护模式报错解决方案(使用python写注册表)

selenium IE保护模式报错解决方案

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 IE保护模式报错解决方案(使用python写注册表)_第1张图片

注意 需要使用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浏览器的安全模式就可以了。

你可能感兴趣的:(工作记录,selenium,python,测试工具)