SeleniumをStreamlit Cloudで動作させる方法

実現したいこと

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

試したこと・調べたこと

上記の詳細・結果

以下サイトを参考にブラウザは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

コメントを投稿

0 コメント