zoukankan      html  css  js  c++  java
  • Debian 10/9 安装 Selenium+ChromeDriver

    转发: https://blog.csdn.net/GO_D_OG/article/details/79073727

    查看Debian版本 :

    cat /etc/issue

    测试配置:

    google-chrome 版本

    root@a713d689f464:/opt/chrome# google-chrome -version
    Google Chrome 83.0.4103.116

    ChromeDriver 版本: 83

    一、安装chrome

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt-get -f install 
    dpkg -i google-chrome-stable_current_amd64.deb

    1、如果提示错误:

    dpkg: error processing package google-chrome-stable (--install):

    请执行:

    sudo apt-get upgrade
    sudo apt-get update
    sudo apt-get -f install
    dpkg -i google-chrome-stable_current_amd64.deb

    之后就不会报错了,安装成功的话可以查看到安装路径以及安装的版本:


    二、下载chromedriver
    要根据chrome浏览器的版本对应下载driver驱动的版本:
    下载地址:http://npm.taobao.org/mirrors/chromedriver/

     解压后放到 /usr/bin/ 目录下

    mv chromedriver /usr/bin/

     

    三、安装Xvfb

    sudo apt-get install xvfb

    安装好后执行:

    Xvfb -ac :7 -screen 0 1280x1024x8 -extension RANDR -nolisten inet6 &
    export DISPLAY=:7 (和上一步的number号相同)

    由于每次需要运行程序前都需要启动一次xvfb太麻烦,所以直接写一个开机自启动脚本,这样下次就直接执行程序就可以了。我们需要将脚本写在/etc/rc.local路径下,开机之后会执行/etc/rc.local文件中的脚本,在exit 0前面添加以下内容:
    安装Xvfb

    #! /bin/bash
    case "$1" in
    start)
      /usr/bin/Xvfb :7 -ac -screen 0 1280x1024x8 -extension RANDR -nolisten inet6 &
      export DISPLAY=:7
    ;;
    stop)
      killall Xvfb
    ;;
    esac

    关于错误:Chrome failed to start: exited abnormally
    这个错误我遇到了两次,第一次的时候只需要安装Xvfb就成功解决了,可第二次我已经安装了Xvfb且正常打开了仍然提示了这样的错误,原因是因为需要在自己测试代码里加上以下内容(很关键!):

    //        禁用扩展
            chromeOptions.addArguments("--disable-extensions");
    //        使用无头模式运行
            chromeOptions.addArguments("--headless");
    //        禁用GPU
            chromeOptions.addArguments("--display-gpu");
    //        启动无沙盒模式运行
            chromeOptions.addArguments("--no-sandbox");

    可能是因为chrome占内存过大而卡屏,使得chrome无法正常打开
    并且记得chromedriver的权限要设置为可执行:

    chmod -R 777 chromedriver

  • 相关阅读:
    weex入门篇
    vue项目修改favicon
    IE9 下面, XMLHttpRequest 是不支持跨域请求的解决方法
    angularJS指令动态加载template
    angularJS的ng-repeat-start
    angular指令的详细讲解,不断补充
    实现输入框换行
    vue2.0实现一个模态弹框,内容自定义(使用slot)
    centos7 vnc 无法systemctl启动
    CentOS6.5配置rsyslog
  • 原文地址:https://www.cnblogs.com/666gang/p/13245818.html
Copyright © 2011-2022 走看看