【Selenium】Debian+Selenium+ChromeDriver
阿新 • • 發佈:2019-01-26
測試版本說明
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