chongtianfeiyu 2020-02-21
在ubuntu系统中搭建python3.6.4+selenium+chrome,实现无界面上运行web前端自动化测试
一、ubuntu系统16.04自带了python2.7和python3.5 ,需要安装python3.6.4步骤:
1、使用 wget 命令下载 Python3.6.4 安装包:wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
2、使用 tar 命令对 Python3.6.4 进行解压:tar zxvf Python-3.6.4.tgz
3、进入 Python-3.6.4 目录:cd Python-3.6.4
4、编译安装,执行 ./configure 脚本:./configure
5、执行安装:make make install
安装完成后使用python3.6 检查是否安装成功,然后使用pip3.6 install selenium 如果能正常安装,说明python3.6 安装完成
如果pip安装失败, 提示:pip is configured with locations that require TLS/SSL .......
1.在使用pip的时候需要ssl,通过命令先安装openssl 和 libssl-dev:apt-get install openssl apt-get install libssl-dev
2.cd Python-3.6.4
3.修改Modules/Setup
vim Modules/Setup
#修改结果如下:
# 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
4.再次进行 ./configure --with-ssl
5.执行安装:make make install
二、安装Chrome
下载命令行chrome: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
通过命令安装: sudo dpkg -i google-chrome-stable_current_amd64.deb
也可参考其他方式进行安装
三、安装Chromedriver
在这里 找到自己需要的chromedrive (匹配Chrome版本)
解压后,传入ubuntu系统中
配置chromedriver为可执行,参考如下:
sudo mv -f chromedriver /usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
进入到/usr/bin 目录下 find chromedriver 是否存在
不存在 sudo mv chromedriver /usr/bin 将文件移到这个目录下
修改chromedriver的权限 sudo chmod a+x chromedriver
四、安装Xvfb(可参考这里)
使用 命令安装Xvfb sudo apt-get update && sudo apt-get install -y xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic Xvfb x11-apps imagemagick firefox google-chrome-stable
测试是否安装成功:
1、启动Xvfb服务 : Xvfb -ac :7 -screen 0 1280x1024x8 (注意这个是x, 不是* 哦)
2、export DISPLAY=:7
/usr/bin/google-chrome-stable http://www.mimvp.com // chrome 浏览www.mimvp.com
如果运行完后,出现:
Xlib: extension "RANDR" missing on display ":7"
you made it. 这是个无关紧要的信息,之前我试图解决掉它,没有成功。最后我在运行selenium脚本后,完全没有出现这个信息,脚本执行很正常,所以现在我把它当做是安装成功的信息。
这种方式启动的服务(第二天,通过这种方式启动的服务就关闭了,关闭操作不清楚后续研究)
创建一个服务,先 touch /etc/init.d/Xvfb
脚本如下:
#! /bin/bash
if [ -z "$1" ]; then
echo "`basename $0` {start|stop}"
exit
fi
case "$1" in
start)
/usr/bin/Xvfb :7 -ac -screen 0 1024x768x8 &
;;
stop)
killall Xvfb
;;
esac
修改脚本权限,启动服务:
chmod +x /etc/init.d/Xvfb
chkconfig Xvfb on
service Xvfb start
停止服务的话就是: service Xvfb stop
五、测试脚本
通过命令先安装pyvirtualdisplay:sudo pip install pyvirtualdisplay
脚本参考如下:
from pyvirtualdisplay import Display
from selenium import webdriver
import time
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Chrome()
time.sleep(1)
driver.get(‘http://www.baidu.com‘)
time.sleep(10)
print (driver.page_source)
driver.save_screenshot(‘/home/test/test.png‘)
time.sleep(2)
driver.close()
driver.quit()
display.stop()
使用python3.6 +脚本文件名,运行脚本