一、构建Python环境
1、浏览Linux中的Python版本,可以在Python或python -V中查看。 因为我们的项目大多数使用的是Python3.x,所以我们用的是Python3的版本『
2、下载Python3.x进行解压
光盘/飞机/软件
运行wget 3359 www.python.org/FTP/python/3.6.5/python-3.6.5.tgz下载程序
将tar -zxvf Python-3.6.5.tgz解压到当前目录中
3、安装Python3.6.5
进入解压后的Python-3.6.5文件夹、cd Python-3.6.5
就这样执行
. /配置
发生错误时: configure : error : noacceptableccompilerfoundin $ path表示未安装正确的编译器。 在这种情况下,需要安装/升级gcc和其他从属软件包。
安装完成后,重新运行./configure
化妆
生产安装
经过长时间的等待后,安装完成后,运行python3 -V命令检查安装是否成功
4、将Python3.x设置为默认版本
查看当前python指向的连接、ls -al /usr/hldby | grep python
运行python命令,可以看到它指向python 2.7版
因此,如果要将缺省版本设置为3.x,请重命名原始python软链接。
运行mv/usr/HLD by/python/usr/HLD by/python.bak
此外,还将python命令指向python3: ln-s/usr/local/HLD by/python3/usr/HLD by/python
此时,确认python的版本。 掌上电脑- v
5、3.x升级结束后,请记住yum的配置文件。
/usr/libexec/urlgrabber-ext-down和/usr/hldby/yum的#! # #打/usr/hldby/python! /usr/hldby/python2.7就可以了。
二、安装赛扬
由于当前系统的缺省Python版本为3.x,因此可以直接运行pip安装命令来安装项目所需的扩展库。
1、查看pip版本、pip -V,如果版本低于18,则执行pip安装- -升级pip升级pip版本
如果发生ssl问题,请运行rpm -aq|grep openssl以查看openssl-devel文件是否存在。 如果没有安装yum install openssl-devel -y,请在安装成功后更改VI/opt/soft/python-3 .
# # _编码解码器_cncjk编码解码器/_编码解码器_ cn.c
# # _编码_hkcjk编码/_编码_ HK.c
# # _编码_ iso 2022编码/_编码_ iso 2022.c
# # _编码_日本广播公司/_编码_日本广播公司
# # _编码解码器_Krcjk编码解码器/_编码解码器_ KR.c
# # _编码解码器_twcjk编码解码器/_编码解码器_ tw.c
# # example-- includedforreferenceonly :
# # xxxx模块. c
# # another example-- the ' xx subtype ' moduleshowsc-levelsubtypinginaction
xx子类型xx子类型. c
# # socketmodulehelperforsocket (2)
_套接字模块. ctime模块. c
# # socketmodulehelperforsslsupport; you must注释输出其他
# socket line above,andpossiblyeditthesslvariable :
# # SSL=/usr /本地/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
https://www.cnblogs.com/jinxiao-pu/p/8682126.html
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/hldby/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即可
未完待续