这并不完全是完整的解决方案,但我认为如果您使用 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
传递给 selenium 的 user-data-dir 末尾。
更新1:
好的。如果您想使用自定义用户目录,我有一个 [hacky] 解决方案。排除--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
. 您需要它,因为有一些隐藏按钮在您尝试单击它们时会引发异常。