0

古いWebdriverを開いたままにし、webdriver.remoteを使用して古いドライバのexecutor urlとセッションIDを使用して再度接続する必要があるWebサイトテストを行っています。私のMacBookでは同じコードが正常に動作しますが、AWS EC2 Ubuntu 16.04でエラーが発生しています。エラートレースバックとコードが以下に添付されています。助けてください。Selenium Remote WebdriverがAWS EC2と連携していません

OS:Ubuntuの16.04

セレンバージョン:3.4.0

ブラウザ:Googleのクローム

enter image description hereenter image description here

New Code following @Tarun Lalwani's Idea

+0

デフォルトのUbuntuインストールには、ウィンドウシステムがインストールされていません。あなたはウィンドウシステムとChromeをインストールしましたか? – stdunbar

+0

@stdunbar AWS EC2インスタンスなので、GUIはありません。私はターミナルを介してコードを実行し、またヘッドレスであるwebdriverを設定しました。ウィンドウシステムのインストールが役立つかどうかは不明です。 – SwagZ

+0

GUIがないと、Chromeは実行できません。ヘッドレスはモニターが付いていないことを意味します。 – stdunbar

答えて

0

この問題のためにそう長く掘った後、私は最終的に自分自身で解決策を見つけました。 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に再接続することだけです。新しいドライバを古いドライバに戻す前に、新しいドライバを閉じることができます。

関連する問題