解决selenium从配置到运行报错再到闪退

文章介绍了如何正确安装和配置Chromedriver,包括对应浏览器版本的选择和环境变量设置。针对Selenium的DeprecationWarning,提出了使用Service对象的新方法。此外,讨论了浏览器闪退的问题,指出可能是Selenium版本过高导致,建议降级到4.1.1版本来解决。
摘要由CSDN通过智能技术生成

以谷歌浏览器为例

一、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版本:

 闪退成功解决:

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值