実現したいこと
下のエラーを解消し、正常にコードが実行できるようにしたいです。(以前は動いていました)
発生している問題・エラーメッセージ
MacBook-Air rakuten % python3 point-click-kari.py WARNING:root:Can not find chromedriver for currently installed chrome version. Traceback (most recent call last): File "point-click-kari.py", line 19, in <module> driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=op) File "/Users/do/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/webdriver_manager/chrome.py", line 39, in install driver_path = self._get_driver_binary_path(self.driver) File "/Users/do/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/webdriver_manager/core/manager.py", line 33, in _get_driver_binary_path file = self._download_manager.download_file(driver.get_driver_download_url()) File "/Users/do/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/webdriver_manager/drivers/chrome.py", line 59, in get_driver_download_url modern_version_url = self.get_url_for_version_and_platform(driver_version_to_download, os_type) File "/Users/do/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/webdriver_manager/drivers/chrome.py", line 94, in get_url_for_version_and_platform raise Exception(f"No such driver version {browser_version} for {platform}") Exception: No such driver version 116.0.5845.110 for mac-x64
該当のソースコード
py
1from selenium import webdriver 2from selenium.webdriver.chrome.service import Service as ChromeService #追加 3from webdriver_manager.chrome import ChromeDriverManager 4from selenium.webdriver.chrome.options import Options 5from selenium.webdriver.common.by import By 6import time 7import requests 8import chromedriver_autoinstaller 9 10# Check if the current version of chromedriver exists and download it if not found. 11chromedriver_autoinstaller.install() 12 13op = Options() 14# op.add_argument("--headless") 15op.add_argument("--mute-audio") 16 17# Chrome ドライバーを設定 18# driver = webdriver.Chrome(ChromeDriverManager().install(), options=op) 19driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=op) 20driver.get('https://google.com') 21 22 23url = 'https://grp01.id.rakuten.co.jp/rms/nid/vc?__event=login&service_id=top' 24driver.get(url) 25 26elem_username = driver.execute_script('document.getElementById("loginInner_u").value = " "') 27elem_password = driver.find_element(By.ID, 'loginInner_p') 28elem_password.send_keys(' ') 29 30login_btn = driver.find_element(By.CLASS_NAME, 'loginButton') 31login_btn.click() 32 33time.sleep(5) 34 35driver.get("file:///Users/do/documents/rakuten/getWindowHandles.html") 36time.sleep(3) 37 38# 以下の部分は省略(リンクをクリックする処理) 39 40link1 = driver.find_element(By.LINK_TEXT,"Lucky Kuji") 41link2 = driver.find_element(By.LINK_TEXT,"Lucky Kuji2") 42link3 = driver.find_element(By.LINK_TEXT,"Lucky Kuji3") 43link4 = driver.find_element(By.LINK_TEXT,"Lucky Kuji4") 44link5 = driver.find_element(By.LINK_TEXT,"Lucky Kuji5") 45# link6 = driver.find_element(By.LINK_TEXT,"Lucky Kuji6") 46# link7 = driver.find_element(By.LINK_TEXT,"Lucky Kuji7") 47link8 = driver.find_element(By.LINK_TEXT,"Lucky Kuji8") 48# link9 = driver.find_element(By.LINK_TEXT,"Lucky Kuji9") 49link10 = driver.find_element(By.LINK_TEXT,"DailyChance Kuji") 50link11 = driver.find_element(By.LINK_TEXT,"LuckyBingo") 51 52link1.click() 53link2.click() 54link3.click() 55link4.click() 56link5.click() 57# link6.click() 58# link7.click() 59link8.click() 60# link9.click() 61link10.click() 62link11.click() 63 64# 全てのウィンドウハンドルを取得 65allHandles = driver.window_handles 66for handle in allHandles: 67 print(handle) 68 69time.sleep(300) 70 71# ドライバーを終了 72driver.quit() 73
試したこと
こちらの記事を拝見し、「Chrome for Testing」をダウンロードしてみました。
https://www.pinequick.com/wp/memo/684
今まではchromeとchromedriverでヴァージョン不一致が生じエラーが出た際には、webdriver Managerというものを使ってみたり、「pip install chromedriver-binary==116.****」のようにpipでインストールしていたので、あまりダウンロードしてきたものをフォルダに格納するというのがよくわかっておりません。
ちなみにエラーコードにあったディレクトリのファイルを開いてみました。こちらがコードです。
py
1from packaging import version 2 3from webdriver_manager.core.driver import Driver 4from webdriver_manager.core.logger import log 5from webdriver_manager.core.os_manager import OperationSystemManager, ChromeType 6 7 8class ChromeDriver(Driver): 9 10 def __init__( 11 self, 12 name, 13 driver_version, 14 url, 15 latest_release_url, 16 http_client, 17 os_system_manager, 18 chrome_type=ChromeType.GOOGLE 19 ): 20 super(ChromeDriver, self).__init__( 21 name, 22 driver_version, 23 url, 24 latest_release_url, 25 http_client, 26 os_system_manager 27 ) 28 self._browser_type = chrome_type 29 self._os_type = self.get_os_type() 30 31 def get_os_type(self): 32 os_type = super().get_os_type() 33 if "win" in os_type: 34 return "win32" 35 36 if not OperationSystemManager.is_mac_os(os_type): 37 return os_type 38 39 if OperationSystemManager.is_arch(os_type): 40 return "mac_arm64" 41 42 return os_type 43 44 def get_driver_download_url(self): 45 driver_version_to_download = self.get_driver_version_to_download() 46 os_type = self._os_type 47 # For Mac ARM CPUs after version 106.0.5249.61 the format of OS type changed 48 # to more unified "mac_arm64". For newer versions, it'll be "mac_arm64" 49 # by default, for lower versions we replace "mac_arm64" to old format - "mac64_m1". 50 if version.parse(driver_version_to_download) < version.parse("106.0.5249.61"): 51 os_type = os_type.replace("mac_arm64", "mac64_m1") 52 53 if version.parse(driver_version_to_download) >= version.parse("115"): 54 if os_type == "mac64": 55 os_type = "mac-x64" 56 if os_type in ["mac_64", "mac64_m1", "mac_arm64"]: 57 os_type = "mac-arm64" 58 59 modern_version_url = self.get_url_for_version_and_platform(driver_version_to_download, os_type) 60 log(f"Modern chrome version {modern_version_url}") 61 return modern_version_url 62 63 return f"{self._url}/{driver_version_to_download}/{self.get_name()}_{os_type}.zip" 64 65 def get_browser_type(self): 66 return self._browser_type 67 68 def get_latest_release_version(self): 69 determined_browser_version = self.get_browser_version_from_os() 70 log(f"Get LATEST {self._name} version for {self._browser_type}") 71 if version.parse(determined_browser_version) >= version.parse("113"): 72 return determined_browser_version 73 74 latest_release_url = ( 75 self._latest_release_url 76 if (self._driver_version == "latest" or determined_browser_version is None) 77 else f"{self._latest_release_url}_{determined_browser_version}" 78 ) 79 resp = self._http_client.get(url=latest_release_url) 80 return resp.text.rstrip() 81 82 def get_url_for_version_and_platform(self, browser_version, platform): 83 url = "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json" 84 response = self._http_client.get(url) 85 data = response.json() 86 versions = data["versions"] 87 for v in versions: 88 if v["version"] == browser_version: 89 downloads = v["downloads"]["chromedriver"] 90 for d in downloads: 91 if d["platform"] == platform: 92 return d["url"] 93 94 raise Exception(f"No such driver version {browser_version} for {platform}") 95
参考記事にならい、こちらのページからドライバーをダウンロードしました
https://googlechromelabs.github.io/chrome-for-testing/
ダウンロードしたファイルはこちらです(Macです)
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/116.0.5845.96/mac-x64/chrome-mac-x64.zip
ダウンロードしてきたdriverのフォルダは解凍してスクショのディレクトリに置いてみましたが、冒頭のコードを実行してもエラーは解消せず、変わりません。
ちなみにMacbook Air 2020(M1ではないです)
macOS:Ventura 13.4.1です
アドバイスいただけますと幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/26 12:01