1. 程式人生 > 實用技巧 >Centos7伺服器(無GUI)做UI自動化(python+selenium+chrome)

Centos7伺服器(無GUI)做UI自動化(python+selenium+chrome)

平時做web UI 自動化都是在window系統有介面操作的,現在想在自己的伺服器上跑自動化,遇到的問題有:

  • 沒有相應的瀏覽器
  • 使用的是Linux系統(無GUI)
  • 執行的時候看不到介面

針對以上問題,主要還是瀏覽器的問題,把瀏覽器安裝上就行,而且現在的瀏覽器也支援無介面(headless)執行了,這裡選擇 chrome 瀏覽器。

centos7 安裝 chrome

【方法一:通過 yum 直接下載安裝】

  • 配置 yum 源

在目錄 /etc/yum.repos.d/下新建檔案: google-chrome.repo

vi /ect/yum.repos.d/google-chrome.repo

寫入下面內容:

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
  • 安裝 chrome

通過下面命令下載安裝 Google-chrome (安裝的是最新穩定版本)

yum -y google-chrome-stable --nogpgcheck

如下圖顯示安裝成功:

  • 檢視版本

找到 chrome 路徑,做個軟連線方便使用:

which google-chrome-stable
ln -s xxx /bin/chrome

到此chrome安裝完成!

【方法二:下載 rpm 包安裝】

  • 下載 chrome .rpm 包

可以到這個網站找對應的安裝包:

https://pkgs.org/download/google-chrome-stable

這裡下載當前最新版本,具體下載地址:

https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-87.0.4280.88-1.x86_64.rpm

可以通過網址下載到本地後上傳Linux系統,也可以在Linux系統中直接下載,輸入命令:

wget  https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-87.0.4280.88-1.x86_64.rpm

  • 安裝 chrome

輸入命令:

yum -y localinstall google-chrome-stable-87.0.4280.88-1.x86_64.rpm

  • 檢視版本

找到 chrome 路徑,做個軟連線方便使用:

which google-chrome-stable
ln -s xxx /bin/chrome

到此 chrome 安裝成功!

注意:無GUI的Linux系統我們啟動 chrome 是會報錯的,程式執行的時候需要使用無頭模式(headless)

如果你想開啟這種帶介面的程式,我們可以使用 X11-forwarding 詳情可以參考下面的文章:

本地顯示Linux伺服器的GUI程式

安裝 Chromedriver

下載對應版本的 chromedriver:

下載地址:https://chromedriver.storage.googleapis.com/index.html

可以通過網頁下載到本地,解壓後上傳到伺服器,也可以直接命令下載:

wget https://chromedriver.storage.googleapis.com/87.0.4280.88/chromedriver_linux64.zip

然後解壓到對應的路徑:

unzip chromedriver_linux64.zip

賦予執行許可權:

chmod +x ./chromedriver

python 程式碼測試

Linux 預設就有 python 環境,在使用 selenium 之前我們需要提前安裝下對應的包檔案,這樣才能完成後續的編碼,這裡使用 pip 來管理包檔案。

  • 安裝 pip

下載 pip :

wget https://bootstrap.pypa.io/get-pip.py

執行安裝:

python get-pip.py
  • 安裝 selenium
pip install selenium
  • python 測試程式碼
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless') # 使用無頭模式執行chrome
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox') # 這個一定要加,不加Chrome啟動報錯
# 這裡chromedriver的路徑,寫你的對應路徑,最方便就是放在同一個路徑,也可以配置環境變數。
driver = webdriver.Chrome(executable_path='./chromedriver',chrome_options=chrome_options)
driver.get("https://www.baidu.com")
print driver.page_source
driver.close()

執行結果: