症例
通常のSeleniumの使用法として,
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://google.co.jp')
などと実行する分には動作します.しかし,そのあと
driver.save_screenshot('image_path.png')
driver.get('http://yahoo.co.jp')
などと処理を続けたり特定の処理を行うと
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command.
や
selenium.common.exceptions.WebDriverException: Message: A session with id = 'hogehogehoge' was not found.
などと例外を発生して動作が停止してしまうことがあります.
どの処理が悪いのかは完全には分かっていませんが,save_screenshot()
はエラーを起こす黒い操作であると思っています.
結論
Mac OSのバージョンにあったSafari Technology Previewを入れ直しましょう.
Safari Technology Previewとは
Safari Technology Previewは,今後Mac OSやiOSのSafariに組み込まれるかもしれないWebテクノロジーを試してみるためのブラウザです.
筆者は,Webページ全体のスクリーンショットを撮るために使っています.
環境
名前 | バージョン |
---|---|
Selenium with Python | 3.12.0 |
Safari Technology Preview | 11.2 |
Mac OS | High Sierra 10.13.4 |
Python | 3.6.4 |
よくある発症ケース
1. Mac OSをアップデートした時
Mac OSをSierraからHigh Sierraにアップデートする場合(もしくは他のバージョンからHigh Sierraなどにアップデートする場合),最初の数回の動作はOSのバージョン違いのようなエラーを吐くことなく機能します.
ただ,少し操作を続けたりある特定の動作を行うと上記の症例のようにAn unknown server-side error
という情報量≒0なエラーを起こします.
2. テキトーなバージョンのSafari Technology Previewをインストールした場合
実行中は,1.の場合と同じように,OSのバージョンが違うといった警告を出すことなく動作しますが,いきなり動作を停止します.
(インストール時にエラーを出してくれるかどうかは未確認です.)
解決策
いまインストールしてあるSafari Technology Previewをアンインストールして,正しいバージョンのSafari Technology Previewをインストールし直します.
1. いまあるSafari Technology Previewのアンインストール
「Finder」→「アプリケーション」→「Safari Technology Preview」を選択し,「(右クリック)」→「ゴミ箱に入れる」(→「ゴミ箱を空にする」)と操作を行うと簡単にアンインストールできます.
2. 正しいバージョンのSafari Technology Previewのインストール
Safari Technology Previewのダウンロードページから,正しいバージョンのインストーラをダウンロードしてきて,ダブルクリック&実行をします.
おまけ
OSのバージョン違い以外にもAn unknown server-side error
が出た場合は,Webdriverが壊れたというような原因もありえるのでSafari Technology Previewの再インストールは有効な場合もあると考えられます.