当前位置:   article > 正文

解决selenium从配置到运行报错再到闪退_selenium打开浏览器闪退

selenium打开浏览器闪退

以谷歌浏览器为例

一、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,所有我们需要添加一个模块并修改一下代码:

  1. from selenium.webdriver.chrome.service import Service
  2. from selenium import webdriver
  3. # url地址
  4. target= 'http://www.baidu.com'
  5. # 定义chrome驱动地址
  6. path = Service('chromedriver.exe')
  7. # 创建浏览器操作对象
  8. driver= webdriver.Chrome(service=path)
  9. driver.get(target)

现在再执行就不会再报错了。

三、浏览器闪退 

        在解决浏览器闪退的问题上,我们有个笨办法,那就是加上time.sleep(20),这样看着是正常了,但是治标不治本,我们并不满意。寻求进一步的解决方案:

晚上有老铁说,把driver从局部变量提出来,提成全局变量,就不会闪退了像这样:

  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. # 登陆百度
  4. def main():
  5. driver.get('https://www.baidu.com/')
  6. if __name__ == "__main__":
  7. main()

但是实际上没解决,还是会闪退。实际情况是在版本对应没有问题情况下,是selenium版本的问题,最新的selenium就是会在执行完之后自己退出,查了一下,现在电脑里的版本是4.9.0:

只需要给它卸载掉,重新安装4.1.1版本:

 闪退成功解决:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/600024
推荐阅读
相关标签
  

闽ICP备14008679号