早上好。
我是 Selenium 的新手,我對 Selenium 4 有一些問題。基本上我正在嘗試創建一個具有一些自定義方法的類,例如向指定的 URL 發送請求。但是......我堅持使用init方法。使用我撰寫的代碼,瀏覽器正在啟動,但它因錯誤訊息而中斷:
====== WebDriver 管理器 ====== 當前 google-chrome 版本是 101.0.4951 獲取 101.0.4951 google-chrome 驅動程式的最新 chromedriver 版本 [/home/agent2/.wdm/drivers/chromedriver/linux64/ 101.0.4951.41/chromedriver] 在快取 Traceback 中找到(最近一次呼叫最后一次):檔案“/home/agent2/1-Python/Selenium-Scrapy/venv/lib/python3.10/site-packages/selenium/webdriver/common/ service.py",第 71 行,在 start self.process = subprocess.Popen(cmd, env=self.env, File "/usr/lib/python3.10/subprocess.py",第 966 行,在init self._execute_child中(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.10/subprocess.py", line 1842, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory :“鉻驅動程式”
在處理上述例外的程序中,又出現了一個例外:
回溯(最近一次通話最后):檔案“/home/agent2/1-Python/Selenium-Scrapy/bot/booking/booking.py”,第 29 行,在 a = MyBot() 檔案“/home/agent2/1- Python/Selenium-Scrapy/bot/booking/booking.py”,第 17 行,在init super(MyBot, self) 中。init () 檔案“/home/agent2/1-Python/Selenium-Scrapy/venv/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py”,第 70 行,在init super(WebDriver,自己)。init (DesiredCapabilities.CHROME['browserName'], "goog",
File "/home/agent2/1-Python/Selenium-Scrapy/venv/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver. py",第 90 行,在初始化中 self.service.start() 檔案“/home/agent2/1-Python/Selenium-Scrapy/venv/lib/python3.10/site-packages/selenium/webdriver/common/service.py”,第 81 行,開始引發 WebDriverException(selenium.common.exceptions.WebDriverException:訊息:“chromedriver”可執行檔案需要在 PATH 中。請參閱 https://chromedriver.chromium.org/home
這是我的代碼:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
class MyBot(webdriver.Chrome):
"""My class"""
def __init__(
self,
driver=webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options = webdriver.ChromeOptions()
)
):
self.driver = driver
super(MyBot, self).__init__()
def land_first_page(self):
"""My custom method"""
self.get('My-url')
a = MyBot()
a.land_first_page()
老實說,我不知道如何解決這個問題......找到了一些解決方案,但使用 Selenium 3,您可以簡單地將路徑傳遞到驅動程式位置。謝謝!
uj5u.com熱心網友回復:
這是因為您的類繼承自webdriver.Chrome,WebDriver __init__嘗試使用 chromedriver.exe 檔案啟動服務,但由于您沒有提供路徑,因此它使用executable_path="chromedriver"專案中不存在的默認值。
只需洗掉繼承并使用為您創建的driver實體ChromeDriverManager().install()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466287.html
