龙空技术网

CentOS7搭建Python+selenium运行环境

Python小学 454

前言:

今天咱们对“centosfirfox”可能比较重视,咱们都想要剖析一些“centosfirfox”的相关文章。那么小编同时在网上网罗了一些有关“centosfirfox””的相关资讯,希望大家能喜欢,兄弟们快快来学习一下吧!

一、搭建Python环境

1、查看Linux中Python的版本,可以用python 或者python -V查看,因为我们得项目大多使用Python3.x,所以要安装一个Python3的版本‘

2、下载并解压Python3.x

cd /opt/soft

执行 wget 下载Python3.6.5

tar -zxvf Python-3.6.5.tgz 解压到当前目录

3、安装Python3.6.5

进入解压后的Python-3.6.5 文件夹, cd Python-3.6.5

以此执行

./configure

如果执行报错:configure: error: no acceptable C compiler found in $PATH,说明没有安装合适的编译器。这时,需要安装/升级 gcc 及其它依赖包。

安装完成再次执行 ./ configure

make

make install

经过漫长的等待,安装完成后,执行python3 -V命令检查是否安装成功

4、将Python3.x设置为默认版本

查看当前python指向的连接,ls -al /usr/bin | grep python

可以看到如果执行python命令,指向的是python2.7版本

所以,如果要将默认版本设置为3.x我们就要将原来 python 的软链接重命名:

执行mv /usr/bin/python /usr/bin/python.bak

再将python命令指向python3:ln -s /usr/local/bin/python3 /usr/bin/python

这个时候再查看python的版本:python -V

5、如果升级完3.x,记得把yum的配置文件:

/usr/libexec/urlgrabber-ext-down 和 /usr/bin/yum 中的#!/usr/bin/python 改为 #!/usr/bin/python2.7即可。

二、安装selenium

由于目前系统中默认的Python版本为3.x,所以直接执行pip 安装命令即可安装项目中需要的扩展库。

1、查看pip版本,pip -V,如果版本低于18,执行pip install --upgrade pip 升级pip版本

如果遇到ssl问题,执行rpm -aq|grep openssl查看是否有openssl-devel文件,如没有yum install openssl-devel -y安装 ,安装成功后,修改vi /opt/soft/Python-3.6.5/Modules/Setup,增加

#_codecs_cn cjkcodecs/_codecs_cn.c

#_codecs_hk cjkcodecs/_codecs_hk.c

#_codecs_iso2022 cjkcodecs/_codecs_iso2022.c

#_codecs_jp cjkcodecs/_codecs_jp.c

#_codecs_kr cjkcodecs/_codecs_kr.c

#_codecs_tw cjkcodecs/_codecs_tw.c

# Example -- included for reference only:

# xx xxmodule.c

# Another example -- the 'xxsubtype' module shows C-level subtyping in action

xxsubtype xxsubtype.c

# Socket module helper for socket(2)

_socket socketmodule.c timemodule.c

# Socket module helper for SSL support; you must comment out the other

# socket line above, and possibly edit the SSL variable:

#SSL=/usr/local/ssl

_ssl _ssl.c \

-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \

-L$(SSL)/lib -lssl -lcrypto

保存并退出后,重新安装Python:

cd /opt/soft/Python-3.6.5

make

make install

这时候在执行pip安装就可以了。

2、安装selenium

执行 pip install selenium 默认安装最新版本

三、启动项目遇到的问题

1、初始化driver没有指定Firefox驱动的路径

2、火狐浏览器版本与驱动不一致

查看:chromedriver与chrome版本对应表,firefox、geckodriver

3、火狐版本不是最新的:

直接yum 安装:yum install firefox

4、

Q:selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status: 1

A:This error can come up when you are trying to run the browser in non-headless mode on a box that doesn't have a display (like an Ubuntu server).

查看运行目录的cat geckodriver.log火狐驱动日志

由于服务器没有图形界面,导致无法启动浏览器,尴尬,接下来就要解决图形界面的问题了,未完待续……

分割线###################################################################################

后续来了

本地UI自动化项目如何放到服务器上利用Jenkins定时执行呢?

百度了一下,有两种方案,一是PhantomJS,而是让前者失业的Chrome headless mode。

PhantomJS 是一个基于WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准:DOM 处理、CSS 选择器、SON、Canvas、和 SVG。PhantomJS可以用于页面自动化、网络监测、网页截屏以及无界面测试 等。

PhantomJS 最近被selenium放弃了,Chrome headless mode完全和有界面的Chrome一样,可以完美的替代Chrome。

一、选择无界面模式

那我们将项目部署到改如何选择呢?我分别尝试了两种模式。

1.第一次尝试用Chrome headless mode。

在本地调试成功,代码很简单:

opt = webdriver.ChromeOptions()

opt.add_argument('--headless')

opt.add_argument("--window-size=1920,1080")

driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=opt)

webdriver.ChromeOptions是谷歌专门做的headless mode驱动,可以代替Chrome,

一般情况下,我们调用谷歌浏览器只需要

driver = webdriver.Chrome(executable_path='./chromedriver')即可,区别在于增加了一个chrome_options参数,传入opt = webdriver.ChromeOptions()即调用headless mode。

本地运行项目,执行case成功,下一步把代码迁移到服务器,修改executable_path为服务器上驱动的路径,执行项目,需要在Linux服务器上安装Chrome,由于公司服务器都是centos,所以不好安装指定版本的Chrome,所以放弃……

2.尝试PhantomJS

直接将webdriver.PhantomJS()当做一种浏览器使用,类似webdriver.Firefox(),webdriver.Chrome();

其中executable_path为PhantomJS驱动的路径。

driver = webdriver.PhantomJS(executable_path='phantomjs-2.1.1/bin/phantomjs')

本地运行项目,执行case成功。同样下一步把代码迁移到服务器,执行case,完美成功,

需要注意的一点是,页面加载可能不如本地快,所以有必要加一些等待时间来给页面加载。

所以要在服务器做无界面UI自动化测试,PhantomJS无疑是最简单的,也是依赖少的。

Jenkins上新建任务,AutoTest,设置git路径和账号密码。

二、Jenkins执行服务器UI自动化测试项目

增加构建Excute shell如下:

ssh root@IP "rm -rf /home/webapp/WebUI/Settle/*"

scp -r /root/.jenkins/workspace/settleWebUI/* root@IP:/home/webapp/WebUI/Settle

ssh root@IP "cd /home/webapp/WebUI/Settle&&python run_settle_all_test.py"

执行任务即可

二、遇到的问题

1.问题:服务器运行case,截图乱码

解决:由于服务器字体库,执行yum install bitmap-fonts bitmap-fonts-cjk即可

未完待续

标签: #centosfirfox #centosfirefox无法启动 #centos7安装谷歌浏览器打不开 #centos安装最新版火狐 #yum安装火狐