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 詳情可以參考下面的文章:
安裝 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()
執行結果: