在centos6上部署selenium with firefox

作者: cfnju | 来源:发表于2018-03-20 21:55 被阅读0次

    目标

    在centos6上部署selenium with firefox driver

    系统默认配置

    lsb_release -a
    LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
    Distributor ID: CentOS
    Description:    CentOS release 6.9 (Final)
    Release:        6.9
    Codename:       Final
    
    python --version
    Python 2.6.6
    

    最终配置

    Python 2.7.14
    centos 6.9
    selenium 3.8.1
    geckodriver 0.16.1
    firefox 45.9.0
    说明 (> 45 versions depends on gtk3, which depends on gnome 3 while centos6 depends on gnome 2, and need to set capabilities["marionette"] = False
    

    详细步骤

    确认DNS配置,以及可以访问外网

    cat /etc/resolv.conf 
    search XXXX.com
    nameserver X.X.X.X
    nameserver Y.Y.Y.Y
    options timeout:2
    options rotate
    

    配置yum源 并 升级yum本身

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    or
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
    yum clean
    yum makecache
    yum upgrade
    (需要确认一次)
    

    安装开发者工具包

    yum -y install http://linuxdownload.adobe.com/linux/x86_64/adobe-release-x86_64-1.0-1.noarch.rpm
    yum install flash-plugin (需要确认)
    yum -y groupinstall "X Window System" "Desktop" "Fonts" "General Purpose Desktop" 
    yum install -y ImageMagick
    yum install -y Xvfb
    

    安装python2.7最新版

    安装前,系统自带的python是2.6.6,需要安装2.7最新版。
    安装python 2.7

    # 下载python 2.7 并编译,安装
    wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
    tar -xzvf Python-2.7.14.tgz
    cd Python-2.7.14
    ./configure
    make && make install
    
    # 默认 Python 2.7.14 会安装在 /usr/local/bin 目录下。
    ll -tr /usr/local/bin/python*
    
    /usr/local/bin/python2.7
    /usr/local/bin/python2.7-config
    /usr/local/bin/python -> python2
    /usr/local/bin/python2 -> python2.7
    /usr/local/bin/python2-config -> python2.7-config
    /usr/local/bin/python-config -> python2-config
    
    #而系统自带的 Python 是在 /usr/bin 目录下。
    ll -tr /usr/bin/python*
    
    /usr/bin/python2.6-config
    /usr/bin/python2.6
    /usr/bin/python
    /usr/bin/python2 -> python
    /usr/bin/python-config -> python2.6-config
    

    更新系统默认 Python 版本

    # 先把系统默认的旧版 Python 重命名。
    mv /usr/bin/python /usr/bin/python.old
    
    # 再删除系统默认的 python-config 软链接。
    rm -f /usr/bin/python-config
    
    # 最后创建新版本的 Python 软链接。
    ln -s /usr/local/bin/python /usr/bin/python
    ln -s /usr/local/bin/python-config /usr/bin/python-config
    ln -s /usr/local/include/python2.7/ /usr/include/python2.7 (可选,我没选)
    
    # 以上步骤做完以后,目录 /usr/bin 下的 Python 应该是
    
    ll -tr /usr/bin/python*
    
    /usr/bin/python2.6-config
    /usr/bin/python2.6
    /usr/bin/python.old
    /usr/bin/python2 -> python
    /usr/bin/python -> /usr/local/bin/python
    /usr/bin/python-config -> /usr/local/bin/python-config
    
    # 查看新的 Python 版本,python --version,返回 Python 2.7.14 为正常。
    

    为新版 Python 安装 setuptools

    wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    setuptools 正确安装完成后,easy_install 命令就会被安装在 /usr/local/bin 目录下了。
    
    注意:
    升级 Python 可能会导致 yum 命令不可用。解决方法如下:
    编辑 /usr/bin/yum 文件,将开头第一行的
    
    #!/usr/bin/python
    改为
    #!/usr/bin/python2.6
    

    安装pip,Pillow, pyscreenshot, pyvirtualdisplay, selenium

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py
    pip install Pillow
    pip install pyscreenshot
    pip install pyvirtualdisplay
    pip install -U selenium -f /usr/bin/python-config
    

    安装firefox 45.9.0

    wget wget https://ftp.mozilla.org/pub/firefox/releases/45.9.0esr/linux-x86_64/zh-CN/firefox-45.9.0esr.tar.bz2 -O firefox-45.9.0esr-zh-CN.tar.bz2
    tar -xf firefox-45.9.0esr-zh-CN.tar.bz2
    mv firefox /opt/firefox-45.9.0esr-zh-CN
    rm -f /usr/bin/firefox
    ln -s /opt/firefox-45.9.0esr-zh-CN/firefox-bin /usr/bin/firefox
    
    >firefox --version
    Mozilla Firefox 45.9.0
    

    是时候测试一下了

    python test.py
    输出包括网页源码,网页截图保存为pycm.png

    from pyvirtualdisplay import Display
    from selenium import webdriver
     
    display = Display(visible=0, size=(1024, 768))
    display.start()
     
    capabilities = webdriver.DesiredCapabilities().FIREFOX
    capabilities["marionette"] = False
    
    browser = webdriver.Firefox(capabilities=capabilities)
    browser.get('http://www.baidu.com/')
    browser.get_screenshot_as_file('./bd.png')
    print browser.page_source
     
    browser.close()
    display.stop()
    

    sz -bye bd.png看下截图是不是符合预期就可以了。

    参考文档

    后记

    其他错误

    中间安装tkinter重新编译安装了一次python,导致import numpy什么的报找不到module

    查看一下默认python目录:
    rm -f /usr/bin/python
    rm -f /usr/bin/python-config

    ln -s /usr/local/bin/python-config /usr/bin/python-config
    ln -s /usr/local/bin/python /usr/bin/python

    pip无法运行

    pip
    Traceback (most recent call last):
    File "/usr/bin/pip", line 7, in <module>
    from pip import main
    ImportError: No module named pip

    重新安装了一下pip
    然后重装了numpy, pandas, matplotlib, selenium
    pip install -U numpy
    pip install -U pandas
    pip install -U matplotlib
    pip install -U selenium
    pip install -U Pillow
    pip install -U pyscreenshot
    pip install -U pyvirtualdisplay

    相关文章

      网友评论

        本文标题:在centos6上部署selenium with firefox

        本文链接:https://www.haomeiwen.com/subject/uisiqftx.html