Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,今天在针对js动态网页爬虫时,使用代理并使用Selenium,打开网页时,浏览器总是一闪而退,代码如下:

from selenium import webdriver
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
def chrome_proxy():
    driver_path = Service(r'C:\Python39\chromedriver.exe')
    chromeoptions = webdriver.ChromeOptions()
    # 设置代理
    chromeoptions.add_argument("--proxy-server=http://223.242.228.140:42662")
    browser = webdriver.Chrome(service=driver_path,options=chromeoptions)
    # response = browser.get("http://myip.ipip.net")
    browser.get("https://www.baidu.com/")
    print("返回页面", browser.page_source)
if __name__ == '__main__':
    chrome_proxy()

然后以为是下载的浏览器驱动版本不同导致。所以我第一步先排查我的浏览器版本,

如图1:(版本为102.0.5005.63)

浏览器驱动版本我下载的是102.0.5005.61并放到了python的安装目录下(不能用103.0.5060.24会报错版本不匹配):

(下载地址:http://chromedriver.storage.googleapis.com/index.html)

但是版本已经相同了,浏览器还是一闪而退,并且也没有报错驱动版本的错误,但是无意中把driver_path = Service(r'C:\Python39\chromedriver.exe')定义在函数外面确成功了,没有出现闪退,此时恍然大悟,是由于浏览器不是全局变量导致。

from selenium import webdriver

from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
driver_path = Service(r'C:\Python39\chromedriver.exe')
def chrome_proxy():
    chromeoptions = webdriver.ChromeOptions()
    # 设置代理
    chromeoptions.add_argument("--proxy-server=http://223.242.228.140:42662")
    browser = webdriver.Chrome(service=driver_path,options=chromeoptions)
    # response = browser.get("http://myip.ipip.net")
    browser.get("https://www.baidu.com/")
    print("返回页面", browser.page_source)

因此也可以改写成global browser定义成全局变量:
from selenium import webdriver
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
def chrome_proxy():
    # 需要设置browser为全局变量才可以,否则会闪退
    global browser
    driver_path = Service(r'C:\Python39\chromedriver.exe')
    chromeoptions = webdriver.ChromeOptions()
    # 设置代理
    chromeoptions.add_argument("--proxy-server=http://223.242.228.140:42662")
    browser = webdriver.Chrome(service=driver_path,options=chromeoptions)
    # response = browser.get("http://myip.ipip.net")
    browser.get("https://www.baidu.com/")
    print("返回页面", browser.page_source)
if __name__ == '__main__':
    chrome_proxy()

我用的代理是:https://h.shenlongip.com/index?from=seller&did=h4Dmox

当使用Selenium WebDriver 加载页面时出现浏览器闪退时,如何解决?相关推荐

  1. 解决Selenium WebDriver 加载页面时出现浏览器闪退

    webdrive驱动edge浏览器打开网页后,会出现自动退出了情况时,大概率都是浏览器驱动和浏览器版本不一致的问题!以edge为例,我们可以通过点击浏览器的设置,找到关于Microsoft Edge查 ...

  2. AMD的CPU运行Matlab软件进行神经网络运算时总是出现闪退问题及解决方法

    问题描述: 用AMD的CPU运行matlab做神经网络训练时,总是闪退(其它计算都正常),提示错误如下: 所用CPU型号:AMD的3700X MATLAB 版本:  8.6.0.267246 (R20 ...

  3. ie不能加载flash html,IE浏览器无法显示Flash怎么解决

    1,先把IE选项统统设为默认或者:单击IE主窗口中的菜单"工具→Internet选项",在打开的窗口中选择"高级"选项卡,在下面的列表中找到"多媒体→ ...

  4. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  5. vue 加载页面时触发时间_解析Vue项目的四个方面优化

    在本篇文章里我们给大家整理了一篇关于优化VUE项目的四个总要点,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. 运行时优化 1.使用v-if代替v ...

  6. vue 加载页面时触发时间_详解Vue.js在页面加载时执行某个方法

    详解Vue.js在页面加载时执行某个方法 jQuery中可以这样写 vue中,如果要达到相同效果,可以使用vue的生命周期函数,如create或者mounted 附上vue.js的生命周期函数执行流程 ...

  7. 上传文件到服务器经常连接重置,尝试将文件上传到tmp_name时,“正在加载页面时重置了”服务器的连接重置“...

    我正在制作网站以将mp3文件存储在数据库中.当我访问该网站时,它说我已成功连接到数据库,并成功选择了数据库.但是当我选择一个文件并按上传按钮时,它会尝试连接很长时间,然后我的网络浏览器显示" ...

  8. jQuery eq()方法 =》加载页面时单选框默认选中

    *加载页面时单选框默认选中(此方法适用于循环输出的单选钮的默认选中问题) <body> <input type="radio" name="jing&q ...

  9. 首次加载页面时,Android Chrome上永远不会触发Touchstart事件

    On Android Chrome, when you create a new tab and access to a page with the content below, your touch ...

最新文章

  1. linux多线程求和_谈一谈C++中的多线程(上)
  2. 磊哥评测之数据库:腾讯云MongoDB vs自建
  3. 6选择内核启动项_Linux内核都没搞懂,Alot和你还有什么关系?
  4. 360换机 v2.12.5.9 官方安卓版
  5. Win10 OPNET14.5+VS2010 安装教程
  6. php获取qq头像地址,使用PHP语言通过邮箱获取全球公认的Gravatar头像地址
  7. 导论计算机论文题目,计算机类论文题目
  8. 如何使用JGIT在远程仓库获取提交详情记录
  9. POJ 1564 Sum It Up
  10. 13个搭讪绝招助你告别单身
  11. 打开matlab只出现蓝色的界面,win10 windows设置无法打开总卡在纯蓝色界面如何解决...
  12. 对称加密和非对称加密,数字签名和证书
  13. LDAP简述及统一认证说明
  14. SSM实训:11、页面插件集成
  15. Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have
  16. html中使用video标签插入视频
  17. 微软采用 Visual Studio 2005 Team System 进行集成软件开发 ---技术案例研究
  18. 3. 以太网帧的结构
  19. 华为:货币汇率机试题
  20. 50年前的程序员女神,用代码把人类送上月球

热门文章

  1. OpenJudge-021:鸣人和佐助
  2. dilink虚拟服务器怎么设置,最简单的dlink路由器设置教程
  3. Spring、Springboot 应用启动为何这么慢,能否加速?
  4. 《嫌疑犯x的献身》看完了。。。
  5. 【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)
  6. LeetCode#17 Python解
  7. IO回忆录之怎样过目不忘(BIO/NIO/AIO/Netty)2017版
  8. 数据库管理 │ 浅谈从集中式到分布式数据库的转型要点
  9. 英雄联盟(LOL)外挂原理(仅供学术交流)
  10. 在linux安装编译vscode,Linux中安装 Visual Studio Code 详解