以谷歌浏览器为例
一、Chromedriver的安装与环境变量配置
1.检查谷歌浏览器的版本:浏览器地址栏输入: chrome://version
2.下载ChromeDriver时一定要对应好自己的浏览器版本,下载链接:CNPM Binaries Mirror (npmmirror.com)下载的时候没有64位的不要慌,32位的是ok的。
3.将下载好的chromedriver保存至Chrome浏览器的安装目录下:
·一说还要把这个exe文件放到python的运行目录中,就是你写.py程序用到chromedriver的那个文件夹,可以放一下也不费劲。
4.环境变量配置:在系统变量path中添加chrome安装目录路径,即chromedriver.exe所在目录。
二、运行报错DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver=webdriver.Chrome(executable_path='chromedriver.exe')
driver=webdriver.Chrome(executable_path='chromedriver.exe')
这是因为在之前版本executable_path是我们Selenium驱动的存放路径,只有使用executable_path指定出该路径,Selenium才能正常工作,但是Selenium经过版本更新之后,在使用如上写法时,系统就会报错executable_path has been deprecated, please pass in a Service object,所有我们需要添加一个模块并修改一下代码:
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
# url地址
target= 'http://www.baidu.com'
# 定义chrome驱动地址
path = Service('chromedriver.exe')
# 创建浏览器操作对象
driver= webdriver.Chrome(service=path)
driver.get(target)
现在再执行就不会再报错了。
三、浏览器闪退
在解决浏览器闪退的问题上,我们有个笨办法,那就是加上time.sleep(20),这样看着是正常了,但是治标不治本,我们并不满意。寻求进一步的解决方案:
晚上有老铁说,把driver从局部变量提出来,提成全局变量,就不会闪退了像这样:
from selenium import webdriver
driver = webdriver.Chrome()
# 登陆百度
def main():
driver.get('https://www.baidu.com/')
if __name__ == "__main__":
main()
但是实际上没解决,还是会闪退。实际情况是在版本对应没有问题情况下,是selenium版本的问题,最新的selenium就是会在执行完之后自己退出,查了一下,现在电脑里的版本是4.9.0:
只需要给它卸载掉,重新安装4.1.1版本:
闪退成功解决: