これは完全な解決策ではありませんが、Chrome のデフォルトのユーザー ディレクトリを使用し、disable-component-update
スイッチを除外すると、コンポーネントが適切に読み込まれることがわかりました。さまざまなプラットフォーム用の Chrome のデフォルト ユーザー ディレクトリのパスは、こちら* で確認できます。
たとえば、Mac OS X では、次のようにします。
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['disable-component-update'])
options.add_argument('--user-data-dir=~/Library/Application\ Support/Google/Chrome/')
driver = webdriver.Chrome(chrome_options=options)
driver.get('chrome://components/')
そこにWidevineCdmが表示されます。
カスタム ユーザー ディレクトリに対してそれを行う方法が見つかったら、これを更新します。
*Default
パスの最後に自動的に追加されることに注意してください。ご覧Default
のとおり、セレンに渡されるユーザーデータディレクトリの最後には含めていません。
更新 1:
わかりました。カスタムユーザーディレクトリを使用したい場合は、[ハッキー] ソリューションがあります。--disable-component-update
スイッチを除外すると、コンポーネントがロードされますが、完全にはロードされません。に行くとchrome://components
、コンポーネントがそこにあることがわかりますが、それらにはすべて がありversion=0.0.0.0
、更新ボタンをクリックする必要があります。以下は、更新ボタンをクリックする単純なループです。
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['disable-component-update'])
options.add_argument('--user-data-dir=path/to/your/dir')
driver = webdriver.Chrome(chrome_options=options)
driver.get('chrome://components/')
components = driver.find_elements_by_class_name('button-check-update')
for c in components:
try:
c.click()
except:
pass
に注意してくださいtry-except
。クリックしようとすると例外をスローする隠しボタンがいくつかあるため、必要です。