zoukankan      html  css  js  c++  java
  • Centos 7.6 安装selenium+firefox+google chrome(支持xshell运行)

    1. 查看Linux 版本

    [root@penguin selenium]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core)
    

      

    2. 安装selemium

    2.1 通过pip 安装selenium,先安装pip:

    [root@penguin selenium]#yum -y install epel-release
    [root@penguin selenium]#yum -y install python-pip

    2.2 如果提示pip更新则执行如下命令:

    [root@penguin selenium]#pip install --upgrade pip
    

    2.3 pip安装selenium

    [root@penguin src]# pip install selenium
    

    2.4 卸载Centos自带的Mozilla firefox

     mv /etc/firefox/ /etc/firefox.bak
     mv /usr/lib64/firefox/ /usr/lib64/firefox.bak
     mv /usr/bin/firefox /usr/bin/firefox.old
    

    2.5 下载、解压firefox

    [root@penguin src]# ls -l /usr/local/src/firefox-66.0.3.tar.bz2 
    -rw-r--r-- 1 root root 62089056 Apr 30 16:47 /usr/local/src/firefox-66.0.3.tar.bz2
    [root@penguin src]#tar xjvf firefox-66.0.3.tar.bz2 

    2.6 创建虚拟显示

    yum install Xvfb libXfont xorg-x11-fonts*
    pip3 install  pyvirtualdisplay

    2.7 新建符号链接,测试firefox用xshell启动

    [root@penguin src]#cd firefox/
    [root@penguin src]#ln -s /usr/lib64/firefox/firefox /usr/bin/firefox

    [root@penguin selenium]# firefox -version
    Mozilla Firefox 66.0.3

    [root@penguin src]#firefox 此处无报错firefox正常启动,如果有错误请在/etc/hosts保证有如下一行:
    127.0.0.1   localhost

     

    2.8 安装google chrome, 解决root无法运行chrome

    yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

    [root@penguin selenium]# google-chrome -version
    Google Chrome 74.0.3729.108

    解决root无法运行chrome

    vi /usr/bin/google-chrome

    在文件尾部添加:
    if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
      # Note: exec -a below is a bashism.
      exec -a "$0" "$HERE/chrome"  
        --user-data-dir="$CHROME_USER_DATA_DIR" "$@"
    else
      exec -a "$0" "$HERE/chrome"  --user-data-dir="/root/.config/google-chrome/"  
        "$@" --no-sandbox
    fi
    

    2.9 下载、配置firefox对应的webdriver--geckodriver

    cd /usr/local/src/
    tar xzvf geckodriver-v0.24.0-linux64.tar.gz
    cp /usr/local/bin/geckodriver /usr/bin/geckodriver
    

    2.10 下载配置google chrome对应的webdriver--chromedriver_linux64

    下载chromedriver_linux64.zip

    解压,配置如下:

    cp /usr/local/src/chromedriver_linux64/chromedriver /usr/bin/

    root@penguin selenium]# chromedriver -version
    ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29})

    3. 测试

    3.1 编写代码测试firefox

    #!/usr/bin/env python3
    
    from selenium import webdriver
    
    
    driver = webdriver.Firefox()
    driver.get('http://www.163.com')
    print(driver.title)
    #driver.quit()
    

    3.2 编写代码测试google chrome

    #!/usr/bin/env python3
    
    from selenium import webdriver
    
    
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    print(driver.title)
    
    driver.quit()
    

      

    4. 异常问题解决

    firefox:

    File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
        keep_alive=True)
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
        self.start_session(capabilities, browser_profile)
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
        response = self.execute(Command.NEW_SESSION, parameters)
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
        self.error_handler.check_response(response)
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
    

      webdriver与firefox版本不匹配,可以查找对应的webdriver版本解决

    Traceback (most recent call last):
      File "./test.py", line 8, in <module>
        driver = webdriver.Firefox()  
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
        self.service.start()
      File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 104, in start
        raise WebDriverException("Can not connect to the Service %s" % self.path)
    selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service geckodriver
    

      卸载系统自带的firefox,重新安装并设置为root可以启动,同时参考步骤2.7/etc/hosts的设置

    chrome:

    主要问题由root不能启动google-chrome导致,配置no-sandbox选项即可,具体参考步骤2.8

  • 相关阅读:
    【原】 OPenCV学习笔记1:imread()
    windows8下:OpenCV2.2.0 +VS2005/2008/2010
    数组指针和指针数组的区别
    虚函数和纯虚函数 覆盖和隐藏
    C/C++文件之eof()
    【转】 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
    HTML 5是如何流行起来的
    Java程序员要注意的10个问题————————好东西就是要拿来分享
    祈福雅安
    对软件工程的思考
  • 原文地址:https://www.cnblogs.com/yanux/p/10798236.html
Copyright © 2011-2022 走看看