前提・実現したいこと
seleniumのwebdriverにターミナル上から接続します。
一度webdriver.Chrome()
で立ち上げたブラウザに対して、driverにセッション情報を受け渡すことで再度接続したいのですが上手くいきません。
該当のソースコード(test.py)をターミナル上で実行した後に、
$ python test.py
以下のようにfetch_source()
関数を実行すると、当然ですが新しいdriverが立ち上がってしまいます。
$ python -c "from test import fetch_source; fetch_source()"
ちなみに、Jupyter Notebookを使ってfetch_source()
関数を実行すれば、立ち上がっている既存のブラウザ上にアクセスすることは可能です。
しかし、ターミナル上でこの操作を行いたいです。
該当のソースコード
python
1#test.py 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4from webdriver_manager.chrome import ChromeDriverManager 5 6options = Options() 7driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) 8driver.get('https://www.google.com/') 9 10def fetch_source(): 11 html_source = driver.page_source
試したこと
Seleniumは既存のブラウザーセッションと対話できますか?というページがよく似た問題を扱っていると思います。このサイトを参考に、
python
1url = driver.command_executor._url 2session_id = driver.session_id
でセッション情報を取得し、それらを以下のようにdriverに受け渡すことで既存のブラウザセッションに接続することを試みましたがダメでした。
python
1driver = webdriver.Remote(command_executor=url, desired_capabilities={}) 2driver.close() # this prevents the dummy browser 3driver.session_id = session_id
何か解決策があれば教えてください。
あなたの回答
tips
プレビュー