実現したいこと
Streamlit Cloud上でSeleniumのdriverを設定したいです。
発生している問題・分からないこと
下記を実行したときエラーが発生します。
driver = webdriver.Chrome(
service=ChromiumService(
ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()
)
)
エラーメッセージ
error
1Traceback: 2File "/home/adminuser/venv/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 535, in _run_script 3 exec(code, module.__dict__) 4File "/mount/src/driver_test.py", line 27, in <module> 5 driver = generate_driver() 6 ^^^^^^^^^^^^^^^^^ 7File "/mount/src/driver_test.py", line 20, in generate_driver 8 ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install() 9File "/home/adminuser/venv/lib/python3.11/site-packages/webdriver_manager/chrome.py", line 40, in install 10 driver_path = self._get_driver_binary_path(self.driver) 11 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 12File "/home/adminuser/venv/lib/python3.11/site-packages/webdriver_manager/core/manager.py", line 40, in _get_driver_binary_path 13 file = self._download_manager.download_file(driver.get_driver_download_url(os_type)) 14 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 15File "/home/adminuser/venv/lib/python3.11/site-packages/webdriver_manager/drivers/chrome.py", line 32, in get_driver_download_url 16 driver_version_to_download = self.get_driver_version_to_download() 17 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18File "/home/adminuser/venv/lib/python3.11/site-packages/webdriver_manager/core/driver.py", line 48, in get_driver_version_to_download 19 return self.get_latest_release_version() 20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 21File "/home/adminuser/venv/lib/python3.11/site-packages/webdriver_manager/drivers/chrome.py", line 64, in get_latest_release_version 22 determined_browser_version = ".".join(determined_browser_version.split(".")[:3]) 23 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
該当のソースコード
Python
1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from webdriver_manager.core.os_manager import ChromeType 4from webdriver_manager.chrome import ChromeDriverManager 5import streamlit as st 6from selenium.webdriver.chrome.service import Service as ChromiumService 7 8 9def generate_driver(): 10 options = Options() 11 options.add_argument("--headless") 12 options.add_argument( 13 "--no-sandbox" 14 ) 15 options.add_argument( 16 "--disable-dev-shm-usage" 17 ) 18 driver = webdriver.Chrome( 19 service=ChromiumService( 20 ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install() 21 ) 22 ) 23 return driver 24 25 26st.title("driver_test.py") 27driver = generate_driver() 28
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
以下サイトを参考にブラウザはchromiumを使用しました。
https://ohenziblog.com/streamlit_cloud_for_selenium/
Seleniumは4.17.2を使用。webdriver-managerの説明から該当箇所を以下のように変更しました。
selenium 4
driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))
Selenium3も試しましたが、同じ個所でエラーが発生しました。
参考:https://pypi.org/project/webdriver-manager/
補足
Streamlit Cloudにてdeployしたアプリ上で実行しました。
Pythonは3.11です。
ライブラリのバージョンは以下の通りです。
Selenium==4.17.2
streamlit==1.30.0
webdriver-manager==4.0.1
またpackges.txtは下記の通りです。
chromium
chromium-driver

回答2件
あなたの回答
tips
プレビュー