我在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自动化这个东西。
答案 0 :(得分:5)
根据documentation,在python-selenium中,你应该使用被调用的设置
ignoreProtectedModeSettings
:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.INTERNETEXPLORER
caps['ignoreProtectedModeSettings'] = True
driver = webdriver.Ie(capabilities=caps)
答案 1 :(得分:1)
在某些情况下,所需的功能无效。以下是使用winreg从注册表更改保护设置的方法。
Microsoft Scripting Runtime
答案 2 :(得分:0)
如果功能模式不起作用,则有另一种选择。
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')
答案 3 :(得分:0)
这是Dinesh代码的另一种变体,用于禁用注册表中的受保护模式。它还会关闭连接。
只需将此代码放在您的硒自动化代码之前,它将为浏览器做好准备。
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