1. 程式人生 > >【Selenium】Debian+Selenium+ChromeDriver

【Selenium】Debian+Selenium+ChromeDriver

測試版本說明

Debian 9.0 64位
Selenium 3.4.0
chrome 63
ChromeDriver 2.34
Java 1.8.0

安裝chrome

需要在伺服器上裝chrome瀏覽器:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt-get -f install 
dpkg -i google-chrome-stable_current_amd64.deb

如果提示錯誤:

dpkg: error processing package
google-chrome-stable (--install):

請執行:

sudo apt-get upgrade
sudo apt-get update
sudo apt-get -f install
dpkg -i google-chrome-stable_current_amd64.deb

之後就不會報錯了,安裝成功的話可以檢視到安裝路徑以及安裝的版本:
這裡寫圖片描述

下載chromedriver

chromedriver版本 支援的Chrome版本
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47

安裝Xvfb

sudo apt-get install xvfb

安裝好後執行:
Xvfb -ac :7 -screen 0 1280x1024x8 -extension RANDR -nolisten inet6 &


export DISPLAY=:7 (和上一步的number號相同)

由於每次需要執行程式前都需要啟動一次xvfb太麻煩,所以直接寫一個開機自啟動指令碼,這樣下次就直接執行程式就可以了。我們需要將指令碼寫在/etc/rc.local路徑下,開機之後會執行/etc/rc.local檔案中的指令碼,在exit 0前面新增以下內容:

#! /bin/bash
case "$1" in
start)
  /usr/bin/Xvfb :7 -ac -screen 0 1280x1024x8 -extension RANDR -nolisten inet6 &
  export DISPLAY=:7
;;
stop)
  killall Xvfb
;;
esac

關於錯誤:Chrome failed to start: exited abnormally

這個錯誤我遇到了兩次,第一次的時候只需要安裝Xvfb就成功解決了,可第二次我已經安裝了Xvfb且正常打開了仍然提示了這樣的錯誤,原因是因為需要在程式碼里加上一下內容(很關鍵!):

//        禁用擴充套件
        chromeOptions.addArguments("--disable-extensions");
//        使用無頭模式執行
        chromeOptions.addArguments("--headless");
//        禁用GPU
        chromeOptions.addArguments("--display-gpu");
//        啟動無沙盒模式執行
        chromeOptions.addArguments("--no-sandbox");

可能是因為chrome佔記憶體過大而卡屏,使得chrome無法正常開啟
並且記得chromedriver的許可權要設定為可執行:

chmod -R 777 chromedriver