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. 数据查询分页显示的优化方法
  2. Parsing XML in J2ME
  3. C/C++查找一定范围内的素数(筛法)
  4. java嵌入式开发neo4j_java-嵌入式Neo4j实际如何工作?
  5. python中break和continue的区别_python中break和continue的区别
  6. 力扣--122. 买卖股票的最佳时机 II
  7. S32K MCAL02-FlexCAN 时钟模块【理论部分】
  8. 拼多多商品详情百亿补贴数据采集接口代码展示
  9. 反转字符串中的元音字母Python解法
  10. Excel 多级下拉菜单设置,数据有效性
  11. unity3d学习笔记-报错
  12. 页面布局(1):淘宝首页
  13. 喜大普奔!GitHub App 终于支持中文了,可尝鲜下载体验!
  14. python实现crc32爆破,得到加密文件内容
  15. 分数换算小数补0法_一年级数学0基础的全过来,最全知识点及基本方法,包你数学不补课都90+...
  16. 怎么用计算机玩绝地求生,8g内存玩绝地求生卡顿怎么办?绝地求生大逃杀内存设置优化图文教程...
  17. 加ing形式的单词有哪些_给下面的单词分类 直接加ing: 去e加ing: 特殊变位:,去e加ing的英语单词...
  18. 基于智能融合配变终端的数字化台区技术应用(转载)
  19. 小议PPT制作:高管如何做演讲PPT
  20. orange Pi3解码能力测试

热门文章

  1. Java 支付宝手机网站支付下单 支付回调 及订单查询实现
  2. 【小李木耳】2012年5月高兴事:哈尔滨集散中心成立、商标正式申请!
  3. 5700教程☆问题汇总
  4. Spring 马士兵
  5. OOSE-人际关系管理系统设计开发
  6. android 解析json数据格式
  7. C语言总结这一篇就够了(不收藏必后悔系列)
  8. 最小二乘法(Ordinary Least Squares)
  9. CF791A Bear and Big Brother 【题解】
  10. 怎样用 16.7 个小时做 40 小时的工作