2021-05-12 14:32:11
CentOS7 安裝Selenium+Chrome+ChromeDriver
注意:我試過用CentOS 6.5玩Selenium,但是很慘,CentOS 6.5安裝設定非常麻煩,而CentOS 7安裝過程很順暢,原因可能是CentOS 6.5對於chrome和chromedriver的支援非常之不好,準確的說不支援chrome而必須採用chromium,chromium的安裝很不順暢,所以,建議玩CentOS 6.5的,可以升級或者重新上一台CentOS 7伺服器吧!在無介面的CentOS7上安裝Selenium+Chrome,並使用facebook的php-webdriver
測試系統環境
CentOS Linux 7 (Core)
Operating System: CentOS Linux 7 (Core)
Kernel: Linux 3.10.0-693.17.1.el7.x86_64
Architecture: x86-64
安裝 chrome
使用下面的命令,在root使用者下就可以安裝最新的 Google Chrome:
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
安裝 selenium
在 seleniump官網 找到最新的版本,下載selenium-server-standalone-X.XX.X.jar檔案
注意:最新的版本3.11,不是3.9(2018年3月)
selenium-server-standalone-3.11.0.jar
selenium服務初始化
將上述selenium放入一個資料夾中,輸入如下命令初始化
java -jar selenium-server-standalone-3.11.0.jar
注意,需要 java8 環境,可以參考如下
--------------------------------------分割線 開始--------------------------------------
CentOS7安裝Java執行環境jdk
檢測java jdk是否已經安裝
1、檢視Linux自帶的JDK是否已安裝
java -version
2、檢視JDK資訊
rpm -qa | grep java
顯示:
java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx
java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx
解除安裝(有幾個解除安裝幾個)
rpm -e –nodeps java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx
rpm -e –nodeps java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx
還有一些其他的命令
rpm -qa | grep gcj
rpm -qa | grep jdk
如果出現找不到openjdk source的話,那麼還可以這樣解除安裝
yum -y remove java java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx
yum -y remove java java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx
我當前安裝並沒有java版本,故我這就沒有解除安裝這個流程。
下載安裝
首先到Oracle官網下載jdk
然後解壓jdk
tar -zxvf jdk-8u162-linux-x64.tar.gz
將解壓後的資料夾移到自己安裝第三方軟體的常用資料夾中:
mv jdk1.8.0_162 /usr/local/
設定JDK環境變數
安裝完成後需要設定一下環境變數,編輯/etc/profile檔案:
vim /etc/profile
在檔案尾部新增如下設定:
#JDK1.8
export JAVA_HOME=/opt/jdk1.8.0_162
export JAVA_BIN=/opt/jdk1.8.0_162/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
重新載入/etc/profile檔案
source命令重新載入/etc/profile檔案,使得修改後的內容在當前shell視窗有效:
source /etc/profile
驗證是否安裝成功
java -version
如果出現以下資訊則說明安裝成功。
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
--------------------------------------分割線 結束 --------------------------------------
安裝 chromerriver
在 chromerriver官網下載最新的ChromeDriver壓縮包,解壓得到chromedriver.exe檔案
chromedriver_linux64.zip 2018-03-20 15:22:39
將下載的檔案解壓,放在如下位置
/usr/bin/chromedriver
給予執行許可權
chmod +x /usr/bin/chromedriver
安裝 XVFB
輸入如下命令
# yum install Xvfb -y
# yum install xorg-x11-fonts* -y
新建在/usr/bin/ 一個名叫 xvfb-chrom 的檔案寫入以下內容:
vi /usr/bin/xvfb-chrome
#!/bin/bash
_kill_procs() {
kill -TERM $chrome
wait $chrome
kill -TERM $xvfb
}
# Setup a trap to catch SIGTERM and relay it to child processes
trap _kill_procs SIGTERM
XVFB_WHD=${XVFB_WHD:-1280x720x16}
# Start Xvfb
Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp &
xvfb=$!
export DISPLAY=:99
chrome --no-sandbox --disable-gpu$@ &
chrome=$!
wait $chrome
wait $xvfb
新增執行許可權
chmod +x /usr/bin/xvfb-chrome
檢視當前對映關係
ll /usr/bin/ | grep chrom
-rwxr-xr-x 1 root root 7874704 Mar 20 14:55 chromedriver
lrwxrwxrwx 1 root root 31 Mar 20 00:24 google-chrome -> /etc/alternatives/google-chrome
lrwxrwxrwx 1 root root 32 Mar 20 14:30 google-chrome-stable -> /opt/google/chrome/google-chrome
更改Chrome啟動的軟連線
ln -s /etc/alternatives/google-chrome /usr/bin/chrome
rm -rf /usr/bin/google-chrome
ln -s /usr/bin/xvfb-chrome /usr/bin/google-chrome
檢視修改後的對映關係
ll /usr/bin/ | grep chrom
-rwxr-xr-x 1 root root 7874704 Mar 20 14:55 chromedriver
lrwxrwxrwx 1 root root 31 Mar 20 00:24 chrome -> /etc/alternatives/google-chrome
lrwxrwxrwx 1 root root 22 Mar 20 00:11 google-chrome -> /usr/bin/xvfb-chromium
lrwxrwxrwx 1 root root 32 Mar 20 14:30 google-chrome-stable -> /opt/google/chrome/google-chrome
-rwxr-xr-x 1 root root 432 Mar 20 00:09 xvfb-chrome
使用facebook的php-webdriver測試
<?php
// An example of using php-webdriver.
// Do not forget to run composer install before and also have Selenium server started and listening on port 4444.
namespace FacebookWebDriver;
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
require_once('vendor/autoload.php');
// start Chrome with 5 second timeout
$host = 'http://localhost:4444/wd/hub'; // this is the default
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
// navigate to 'http://www.baidu.com/'
$driver->get('https://www.baidu.com/');
// wait until the page is loaded
// $driver->wait()->until(
// WebDriverExpectedCondition::titleContains('百度')
// );
// print the title of the current page
echo "The title is '" . $driver->getTitle() . "'n";
// print the URI of the current page
echo "The current URI is '" . $driver->getCurrentURL() . "'n";
// print the pagesource of the current page
$html_selenium = $driver->getPageSource();
echo $html_selenium;
// close the browser
$driver->quit();
相關文章