最近發現原先寫好的 Python 自動化程式「send_keys」部份出現異常,會吐出「selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value'」的錯誤訊息,經查發現是因為 Chrome 自動更新後導致與 chromedriver 版本不匹配所衍生的問題,這邊簡單記錄一下解決方式。
簡單的說,Chrome v0.65 必須搭配 chromedriver v2.36 以上的版本。然而,使用 pip 更新 chromedriver 後,發現無論怎麼更新都只有 v2.24.1,改用 chromedriver-binary 解決此問題。
期間我也一併把 pip、selenium、chromedriver 等套件都更新了,所以不是很確定是否要更新這些東西,如果還是不行可以都一併更新了試試。
- 查看 chromedriver 版本,確認版本是否真的過舊:
(如果以下指令無法使用,請檢查一下 pip.exe 的所在目錄是否位於環境變數PATH
中,或是直接到 pip.exe 所在目錄下執行)pip show chromedriver
- 安裝 chromedriver-binary
pip install chromedriver-binary
- 修改 Python 程式碼
from selenium import webdriver
新增一行成為:
from selenium import webdriver import chromedriver_binary # Adds chromedriver binary to path
原來的:driver = webdriver.Chrome(r'C:\Users\XXXX\AppData\Local\Programs\Python\Python35\download\chromedriver.exe')
改為:
driver = webdriver.Chrome()
再次執行,搞定!
附註:
- 更新 pip 方式:
python -m pip install --upgrade pip
- 更新套件方式:
pip install -U chromedriver