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

以谷歌浏览器为例

一、Chromedriver的安装与环境变量配置

1.检查谷歌浏览器的版本:浏览器地址栏输入: chrome://version

解决selenium从配置到运行报错再到闪退_第1张图片

 2.下载ChromeDriver时一定要对应好自己的浏览器版本,下载链接:CNPM Binaries Mirror (npmmirror.com)下载的时候没有64位的不要慌,32位的是ok的。

3.将下载好的chromedriver保存至Chrome浏览器的安装目录下:解决selenium从配置到运行报错再到闪退_第2张图片

·一说还要把这个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:

解决selenium从配置到运行报错再到闪退_第3张图片

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

解决selenium从配置到运行报错再到闪退_第4张图片

 闪退成功解决:

解决selenium从配置到运行报错再到闪退_第5张图片

 

你可能感兴趣的:(Python,随笔,selenium,chrome,测试工具)