Centos 7.6 安裝selenium+firefox+google chrome(支持xshell運行)

来源:https://www.cnblogs.com/yanux/archive/2019/04/30/10798236.html
-Advertisement-
Play Games

1. 查看Linux 版本 2. 安裝selemium 2.1 通過pip 安裝selenium,先安裝pip: 2.2 如果提示pip更新則執行如下命令: 2.3 pip安裝selenium 2.4 卸載Centos自帶的Mozilla firefox 2.5 下載、解壓firefox 2.6 創 ...


1. 查看Linux 版本

[root@penguin selenium]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

  

2. 安裝selemium

2.1 通過pip 安裝selenium,先安裝pip:

[root@penguin selenium]#yum -y install epel-release
[root@penguin selenium]#yum -y install python-pip

2.2 如果提示pip更新則執行如下命令:

[root@penguin selenium]#pip install --upgrade pip

2.3 pip安裝selenium

[root@penguin src]# pip install selenium

2.4 卸載Centos自帶的Mozilla firefox

 mv /etc/firefox/ /etc/firefox.bak
 mv /usr/lib64/firefox/ /usr/lib64/firefox.bak
 mv /usr/bin/firefox /usr/bin/firefox.old

2.5 下載、解壓firefox

[root@penguin src]# ls -l /usr/local/src/firefox-66.0.3.tar.bz2 
-rw-r--r-- 1 root root 62089056 Apr 30 16:47 /usr/local/src/firefox-66.0.3.tar.bz2
[root@penguin src]#tar xjvf firefox-66.0.3.tar.bz2 

2.6 創建虛擬顯示

yum install Xvfb libXfont xorg-x11-fonts*
pip3 install  pyvirtualdisplay

2.7 新建符號鏈接,測試firefox用xshell啟動

[root@penguin src]#cd firefox/
[root@penguin src]#ln -s /usr/lib64/firefox/firefox /usr/bin/firefox

[root@penguin selenium]# firefox -version
Mozilla Firefox 66.0.3

[root@penguin src]#firefox 此處無報錯firefox正常啟動,如果有錯誤請在/etc/hosts保證有如下一行:
127.0.0.1   localhost

 

2.8 安裝google chrome, 解決root無法運行chrome

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

[root@penguin selenium]# google-chrome -version
Google Chrome 74.0.3729.108

解決root無法運行chrome

vi /usr/bin/google-chrome

在文件尾部添加:
if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
  # Note: exec -a below is a bashism.
  exec -a "$0" "$HERE/chrome"  \
    --user-data-dir="$CHROME_USER_DATA_DIR" "$@"
else
  exec -a "$0" "$HERE/chrome"  --user-data-dir="/root/.config/google-chrome/"  \
    "$@" --no-sandbox
fi

2.9 下載、配置firefox對應的webdriver--geckodriver

cd /usr/local/src/
tar xzvf geckodriver-v0.24.0-linux64.tar.gz
cp /usr/local/bin/geckodriver /usr/bin/geckodriver

2.10 下載配置google chrome對應的webdriver--chromedriver_linux64

 

下載chromedriver_linux64.zip

解壓,配置如下:

cp /usr/local/src/chromedriver_linux64/chromedriver /usr/bin/

root@penguin selenium]# chromedriver -version
ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29})

3. 測試

3.1 編寫代碼測試firefox

#!/usr/bin/env python3

from selenium import webdriver


driver = webdriver.Firefox()
driver.get('http://www.163.com')
print(driver.title)
#driver.quit()

3.2 編寫代碼測試google chrome

#!/usr/bin/env python3

from selenium import webdriver


driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
print(driver.title)

driver.quit()

  

4. 異常問題解決

firefox:

File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

  webdriver與firefox版本不匹配,可以查找對應的webdriver版本解決

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    driver = webdriver.Firefox()  
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/root/.pyenv/versions/3.6.4/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 104, in start
    raise WebDriverException("Can not connect to the Service %s" % self.path)
selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service geckodriver

  卸載系統自帶的firefox,重新安裝並設置為root可以啟動,同時參考步驟2.7/etc/hosts的設置

chrome:

主要問題由root不能啟動google-chrome導致,配置no-sandbox選項即可,具體參考步驟2.8

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • PHP提示Notice: Undefined variable,意思是:你的程式總有有未定義的變數 為什麼在其他地方好好的程式,換個環境報這個Notice,因為php.ini提醒級別設置的問題 場景複原: 舉例,打開php.ini配置文件,搜索error_reporting,讓這個配置的值如下圖 重 ...
  • 整數反轉 題目描述 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 示例 1: 輸入: 123 輸出: 321 示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21 註意: 假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍為 ...
  • 使用keytool工具產生帶根CA和二級CA的用戶證書 1 生成根CA 1.1 生成根CA證書 根CA實際是一張自簽CA,自簽CA的使用者和頒發者都是它自己。使用下麵的命令生成根證書,如果沒有指定 則會使用預設在用戶Home目錄下的 秘鑰庫(如果沒有則會創建),輸入秘鑰庫的密碼,填寫根證書的信息,最 ...
  • Python基礎之變數進階,包括了 變數的引用,可變類型和不可變類型,哈希;其中,變數的引用 包括 函數引用的概念,函數引用理解,函數傳參與引用的關係,函數返回值與引用;可變類型和不可變類型 包括 可變類型修改和重賦值對引用的影響;哈希 僅包含 哈希演算法 等 ...
  • 在上一章的指南中,我們寫了一個命名隊列:生產者往該命名隊列發送消息、消費從從該命名隊列中消費消息。在本章中,我們將創建一個工作隊列,用於在多個工作者之間分配耗時的任務。工作隊列(即任務隊列)的主要思想是避免立即執行那些需要等他們執行完成的資源密集型任務。相反,我們將任務安排在稍後完成。我們將任務封裝 ...
  • 在Java運行時的幾個數據區域中,程式計數器,虛擬機棧,本地方法棧3個區域隨著線程而生,隨線程而滅,因此這幾個區域的記憶體分配和回收具有確定性,不需要過多考慮垃圾回收問題,因為方法結束或者線程結束時,記憶體就回收了。但是方法區和堆區不一樣,一個介面或者實現類所需要的記憶體可能不一樣,一個方法的多個分支需要 ...
  • 本文分享了一下我對API的理解以及百度地圖API的使用舉例。 ...
  • 補充上期str尾碼小魔法: .swapcase() 將字元串大小寫互轉,小變大,大變小 .isnumeric() 判斷是否為數字,支持漢字,範圍廣 .isprinttable() 檢測變數中是否有無法顯示的字元,如\n\t存在則返回False .isspace() 判斷是否全部為空格,\t\n也可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...