この問題のためにそう長く掘った後、私は最終的に自分自身で解決策を見つけました。 GUIなしでUbuntuを使うことは、対処する尻の痛みです。だからあなたがSelenium Webdriverを起動しようとするとき。通常のwebdriver.Chromeだけでなく、webdriver.Remoteなどのオプションをいくつか追加する必要があります。
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import
DesiredCapabilities
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options)
executor_url = driver.command_executor._url
session_id = driver.session_id
driver.get("http://www.google.com")
print(session_id)
print(executor_url)
print(driver.current_url)
driver2 = webdriver.Remote(command_executor=executor_url, desired_capabilities=options.to_capabilities())
driver2.close()
driver2.session_id = session_id
print(driver2.current_url)
driver2.get("http://www.facebook.com")
print(driver2.current_url)
また、webdriver.remoteを使用すると、ゾンビウェブドライバも開きます。あなたが気になるのは、既存のwebdriverに再接続することだけです。新しいドライバを古いドライバに戻す前に、新しいドライバを閉じることができます。
デフォルトのUbuntuインストールには、ウィンドウシステムがインストールされていません。あなたはウィンドウシステムとChromeをインストールしましたか? – stdunbar
@stdunbar AWS EC2インスタンスなので、GUIはありません。私はターミナルを介してコードを実行し、またヘッドレスであるwebdriverを設定しました。ウィンドウシステムのインストールが役立つかどうかは不明です。 – SwagZ
GUIがないと、Chromeは実行できません。ヘッドレスはモニターが付いていないことを意味します。 – stdunbar