Python 3.5 Selenium Webdriver IE

4

我在使用IE浏览器 webdriver 时遇到了问题。如果我打开一个页面,我可以在那个页面找到所有的东西,但是当我从一个URL的页面转移到另一个页面时,当我尝试搜索某些元素时,每次都会收到相同的错误信息:

selenium.common.exceptions.NoSuchWindowException: Message: Unable to get browser

我的代码非常简单:

from selenium import webdriver 
import time

driver = webdriver.Ie()
driver.get('http://www.google.com/xhtml')
driver.get("http://www.virgilio.it/")#example
time.sleep(2)
print(driver.current_url)

主要问题在于IE webdriver失败,但在Firefox和Chrome webdriver中可以工作。
请帮忙解决!?!?!

IE和Windows的哪些版本? - Steven Rumbalski
IE 11.0.96,但我有IE的自动更新。 - Carlo 1585
2个回答

3
在SeleniumHQ的InternetExplorerDriver wiki中,有如下内容:
对于仅限IE 11的情况,您需要在目标计算机上设置注册表项,以便驱动程序可以维护与其创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的键是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。对于64位Windows安装,该键是HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意FEATURE_BFCACHE子键可能存在或不存在,如果不存在则应创建它。重要提示:在此键内,创建一个名为iexplore.exe的DWORD值,并将其值设置为0。

1
嗨Steven,非常非常感谢提前帮忙。很抱歉打扰你,但是你知道怎样在注册表中添加一个键吗?:D 非常非常感谢 - Carlo 1585
刚刚发现怎么做了 ;) 非常感谢 :D - Carlo 1585
如果您有64位Windows安装,请确保您也添加注册表,因为上面提到了32位Windows安装。这意味着您必须遵循64位和32位的程序。 - Parikshit Chalke

0

根据@Steven的答案创建命令。只需以管理员身份运行这些命令:

REG Add "HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE" /v "iexplore.exe" /t REG_DWORD 0
REG Add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE" /v "iexplore.exe" /t REG_DWORD 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接