安装配置
安装Python,当前使用的版本为Python3.7.3
官网下载地址:https://www.python.org/getit/
安装selenium库,当前下载的selenium版本为selenium3.141
1
pip install selenium
下载IEdriver
IEdriver的版本与selenium的版本是有对应关系的,上面安装的selenium版本为3.141,故在下面的driver下载页面中找到对应的版本目录进去找到对应的版本下载。
https://selenium-release.storage.googleapis.com/index.html
放置IEdriver
IEdriver需放在系统的PATH环境变量中,可以直接调用,否则在后续的运行中会提示找不到driver的报错。
由于python安装好之后是会将python的目录添加到环境变量的(在安装python的时候可选),所以建议直接把IEdriver直接放到python安装的根目录即可,毕竟这个也只有python会调用。
配置IE11
在新版的selenium要求IE7及以上版本的IE中的保护模式进行配置。不同区域的保护模式配置需保持一致,要么全部启用,要么全部禁用。
配置方法为:
- IE - Internet选项 - 安全
- 分别将4个区域的”启用保护模式”选项配置为一致
配置注册表
仅IE11下使用selenium,需要进行配置,方法如下:
在运行中输入
regedit
打开注册表找到键:
- 32位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
- 64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
其中
FEATURE_BFCACHE
键可能不存在的,需要自己新建创建一个DWORD类型的注册表键值对,键名叫
iexplore.exe
,值为0
配置结束在python代码中引入并运行即可。
扩展
关于IE配置
在上述的安装配置过程中,如果为配置IE的”启用保护模式”,就会引发如下的报错:
1
2raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.网上有说通过配置如下代码:
1
2from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
DesiredCapabilities.INTERNETEXPLORER['ignoreProtectedModeSettings'] = True但是我测试没有成功,还是按照官方要求,配置IE比较稳妥。
关于注册表配置
根据官网说明,仅IE11需要对注册表进行配置,在未配置注册表的情况下,大部分情况下selenium还是表现正常的,但是有时会有如下报错:
1
2
3
4
5
6
7
8
9
10File "C:\Program Files\Python37-32\lib\site-packages\selenium\webdriver\remote
\webdriver.py", line 841, in get_cookies
return self.execute(Command.GET_ALL_COOKIES)['value']
File "C:\Program Files\Python37-32\lib\site-packages\selenium\webdriver\remote
\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Program Files\Python37-32\lib\site-packages\selenium\webdriver\remote
\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: Unable to get browser我是在通过driver获取cookies信息时不停的出现这种报错。
1
cookies = driver.get_cookies()
修改注册表之后,问题解决。
有问题还是得多看看官网,很多都有说明。
官网地址:https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver