python遇到使用selenium的問題

来源:https://www.cnblogs.com/ivanlee717/archive/2022/10/13/16789389.html
-Advertisement-
Play Games

最近在學著使用blackwidow這個工具,在ubuntu20.02系統的安裝過程當中遇到了selenium使用的一些問題。 selenium是個什麼工具? Selenium是一個用於Web應用程式測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7 ...


最近在學著使用blackwidow這個工具,在ubuntu20.02系統的安裝過程當中遇到了selenium使用的一些問題。

selenium是個什麼工具? 

Selenium是一個用於Web應用程式測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。這個工具的主要功能包括:測試與瀏覽器的相容性——測試應用程式看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能——創建回歸測試檢驗軟體功能和用戶需求。支持自動錄製動作和自動生成.Net、Java、Perl等不同語言的測試腳本

這一個工具同時也集成到了python的庫當中,通過引用模塊就可以使用。

不過如果遇到了以下這種錯誤:

/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
crawl.py:29: DeprecationWarning: use options instead of chrome_options
  driver = webdriver.Chrome(chrome_options = chrome_options)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/common/service.py", line 71, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "crawl.py", line 29, in <module>
    driver = webdriver.Chrome(chrome_options = chrome_options)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
    super().__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/chromium/webdriver.py", line 89, in __init__
    self.service.start()
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home

Selenium3.x調用瀏覽器必須有一個webdriver驅動文件,錯誤是no such file or directory: "chromedriver"的意思就是電腦沒有安裝chrome,也沒有找到軟體路徑。需要先去官網上下載一下這個壓縮包

parallels@parallels-Parallels-Virtual-Platform:~/BlackWidow$ sudo wget https://chromedriver.storage.googleapis.com/107.0.5304.18/chromedriver_linux64.zip
--2022-10-13 18:57:21--  https://chromedriver.storage.googleapis.com/107.0.5304.18/chromedriver_linux64.zip
Resolving chromedriver.storage.googleapis.com (chromedriver.storage.googleapis.com)... 142.250.204.48
Connecting to chromedriver.storage.googleapis.com (chromedriver.storage.googleapis.com)|142.250.204.48|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6876869 (6.6M) [application/zip]
Saving to: ‘chromedriver_linux64.zip’

chromedriver_linux64.zip                        100%[====================================================================================================>]   6.56M  5.34MB/s    in 1.2s    
2022-10-13 18:57:22 (5.34 MB/s) - ‘chromedriver_linux64.zip’ saved [6876869/6876869]

安裝之後進行解壓,然後就直接得到一個可執行文件,我們再繼續運行原來的命令,又會遇到新的以下的問題

/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
crawl.py:29: DeprecationWarning: use options instead of chrome_options
  driver = webdriver.Chrome(chrome_options = chrome_options)
Traceback (most recent call last):
  File "crawl.py", line 29, in <module>
    driver = webdriver.Chrome(chrome_options = chrome_options)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
    super().__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__
    super().__init__(
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 272, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 364, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 429, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary

找不到chrome binary,這種情況一般是瀏覽器對應的驅動沒有再預設路徑下找到瀏覽器的二進位文件。

首先我們檢查到主機上就沒有安裝谷歌瀏覽器

parallels@parallels-Parallels-Virtual-Platform:~/BlackWidow$ chromium-browser -version
Command 'chromium-browser' not found, but can be installed with:
sudo apt install chromium-browser
1. parallels@parallels-Parallels-Virtual-Platform:~/BlackWidow$ sudo apt install chromium-browser
2. 將之前下載的文件移動到該路徑/usr/bin,命令: sudo mv chromedriver /usr/bin
3. 切換到/usr/bin目錄,命令: cd /usr/bin
4. 使得其變成可執行文件,命令 :sudo chmod a+x chromedriver

最後再執行工具命令就可以了

本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16789389.html


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

-Advertisement-
Play Games
更多相關文章
  • 需求背景: 要求導出的Excel有水印,且水印不要是可點擊的圖片影響正常操作。 開發環境: JDK 1.8 SpringBoot v2.2.5.RELEASE 導入依賴: 1 <!-- poi 相關--> 2 <dependency> 3 <groupId>org.apache.poi</group ...
  • ##HashMap Map集合基於 鍵(key)/值(value)映射。每個鍵最多只能映射一個值。鍵可以是任何引用數據類型的值,不可重覆;值可以是任何引用數據類型的值,可以重覆;鍵值對存放無序。 HashMap常用方法 ##put/get 方法 1.put(K key, V value) 將鍵(ke ...
  • 今天幫同學解決scrapy的時候發現的,就是在我這裡能運行,在他那裡不能運行。對比scrapy的版本發現,他的是最新的(2.6.3),然後我的是2.5.0的。隨後我將他的版本也換成跟我同樣的,他的也能運行了。之後我去看了官方更新文檔,發現在2.5.1的更新上說明瞭,http的驗證需要在setting ...
  • 依賴註入 控制反轉(inversion of control,IOC)是設計模式中非常重要的思想,而依賴註入(dependency injection,DI)是控制反轉思想的一種重要的實現方式。依賴註入簡化了模塊的組裝過程,減小了模塊之間的耦合度,因此.NET Core中大量應用了依賴註入的開發模式 ...
  • 需求:在開發過程中經常需要部分數據等待的載入。可能因為某個表比較慢而卡到主線程,所以需要實現局部載入等待。(在Web肯定就ajax非同步就好做,winform就比較複雜點了) 效果圖 效果圖的主要效果沒展示出來,就這樣吧。懶了懶了! 用用戶控制項新建等待視窗 //Loding2的類 public par ...
  • 在最新版的 .NET 平臺中,微軟在逐步放棄 System.Drawing.Imaging ,給出的理由如下: System.Drawing命名空間對某些操作系統和應用程式類型有一些限制。 在Windows, System.Drawing 依賴於GDI+操作系統附帶的本機庫。 某些Windows S ...
  • 支持.NET/.NET Framework/.NET Core RabbitMQ作為一款主流的消息隊列工具早已廣受歡迎。相比於其它的MQ工具,RabbitMQ支持的語言更多、功能更完善。 本文提供一種市面上最/極簡單的使用RabbitMQ的方式,只需要會調用以下三個方法,你就幾乎可以掌握整個Rabb ...
  • 一:背景 1.講故事 前段時間有位朋友微信找到我,說他的程式出現了 CPU 爆高,幫忙看下程式到底出了什麼情況?圖就不上了,我們直接進入主題。 二:WinDbg 分析 1. CPU 真的爆高嗎? 要確認是否真的爆高,可以使用 !tp 觀察。 0:000> !tp CPU utilization: 9 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...