3

我在自动化保护设置时遇到问题IE using Selenium with python

我找到了一个在 java 中自动化设置的解决方案,但是当我将它更改为 python 时它不起作用。

我尝试了以下方法::

from selenium import webdriver

caps=webdriver.DesiredCapabilites.INTERNETEXPLORER
caps['INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS']=True
driver=webdriver.Ie(caps)

这对给定的论点给出了错误。

当我使用driver = webdriver.Ie() 它时,它说所有区域的保护模式设置必须相同。

谁能帮我在 python 中使用 selenium 自动化这件事。

4

4 回答 4

5

根据文档,在 python-selenum 中,您应该使用名为 ignoreProtectedModeSettings

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.INTERNETEXPLORER
caps['ignoreProtectedModeSettings'] = True

driver = webdriver.Ie(capabilities=caps)
于 2013-07-16T13:03:32.647 回答
2

如果功能模式不起作用,则有替代方法。

from selenium import webdriver
from selenium.webdriver.ie.options import Options

ie_options = Options()
ie_options.ignore_protected_mode_settings = True
driver = webdriver.Ie(options=ie_options)
driver.get('http://www.google.com')
于 2019-04-18T11:39:40.303 回答
2

所需的功能在某些情况下不起作用。这是一种使用 winreg 从注册表更改保护设置的方法。

from winreg import *

    def Enable_Protected_Mode():
        # SECURITY ZONES ARE AS FOLLOWS:
        # 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".
        #os.system("taskkill /F /IM iexplore.exe")
        try:
            keyVal = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1'
            key = OpenKey(HKEY_CURRENT_USER, keyVal, 0, KEY_ALL_ACCESS)
            SetValueEx(key, "2500", 0, REG_DWORD, 0)
            print("enabled protected mode")
        except Exception:
            print("failed to enable protected mode")
于 2017-08-10T17:23:19.297 回答
0

这是 Dinesh 代码的另一个变体,用于禁用注册表中的受保护模式。它还会关闭连接。

只需将此代码放在您的 selenium 自动化代码之前,它就会准备好浏览器。

import winreg

def set_reg(REG_PATH, name, value):
    try:
        winreg.CreateKey(winreg.HKEY_CURRENT_USER, REG_PATH)
        with winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_WRITE) as registry_key:
            winreg.SetValueEx(registry_key, name, 0, winreg.REG_DWORD, value)
            winreg.CloseKey(registry_key)
            return True
    except WindowsError:
        return False

for i in range(1,5): set_reg(r"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\\" + str(i),'2500', 3)

改编自 Mash 和 icc97 在此线程中的最佳答案: python script to read and write a path to registry

于 2019-12-20T19:36:12.993 回答