1.安装Firefox
服务器在阿里云上,将apt源换成阿里的之后,直接sudo apt install firefox
即可。
Firefox运行还需要D-BUS,因此同时还需要 sudo apt install dbus-x11
2.安装虚拟桌面服务xvfb
xvfb这个仿真框架使用虚拟内存能让X-Server运行在没有显示设备的机器上。这样,浏览器就可以运行了。在ubuntu和Debian上安装xvfb,只要运行:
sudo apt-get install xvfb
现在,可以运行xvfb服务上一个带有数字的显示设备上,这样是为了防止你在下阶段添加设备时引发冲突。用以下命令分配一个显示设备 10..
sudo Xvfb :10 -ac
-ac代表关闭xvfb的访问控制。
3.启动浏览器
在你运行浏览器前,你首先要设置DISPLAY环境变量,以指定xvfb运行在哪个显示设备上。在加入环境变量前,我们检查一下所有的这些都如我们所料:
export DISPLAY=:10
firefox
如果终端(terminal)没有显示错误,就说明你已经成功运行Firefox在无显示设备的ubuntu上了。它会一直运行,直到你使用ctrl + C或其它类似方法来终止其运行。同时,它不会有任何输出。
如果你能成功运行以上的步骤,那么接下来的部分就是轻而易举了。现在,我们可以在ubuntu服务器上运行selenium,如同你在本地运行一样。
4.安装geckodriver
安装完成后,将geckodriver所在路径写入PATH中,之后就可以在服务端进行selenium测试
cd /tmp
wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
tar -xvzf geckodriver*
cp geckodriver ~/bin
export PATH=.:home/bobo/bin:$PATH
笔者使用的shell是zsh,为了把PATH和DISPLAY这两个变量固定下来,在~/.zshrc
中将下面两句语句写入
export PATH=.:home/bobo/bin:$PATH
export DISPLAY=:10
P.S. 使用pyvirtualdisplay
安装xvfb之后,可以考虑使用python库pyvirtualdisplay,防止出现geckodriver出现GBK_BACKEND相关错误