WebDriverでFirefoxを使用しているときにエラーが発生しました。
org.openqa.Selenium.firefox.NotConnectedException: Unable to connect
to Host 127.0.0.1 on port 7055 after 45000 ms.
誰かが似たような問題を抱えていますか、またはこれに対する解決策は何かという考えがありますか。 Chromeでは問題なく動作しますが、FirefoxではURLが読み込まれません。
残念ながらSelenium WebDriver 2.53.0はFirefox 47.0と互換性がありません。 Firefoxブラウザを処理するWebDriverコンポーネント(FirefoxDriver
)は廃止される予定です。バージョン3.0以降、Selenium WebDriverはFirefoxブラウザを管理するためにgeckodriver
バイナリを必要とします。詳しい情報 はこちら 、 はこちら 。
したがって、Selenium WebDriver 2.53.0でFirefox 47.0をブラウザとして使用するには、 Firefoxドライバ (geckodriver
というバイナリファイル)をダウンロードする必要があります。バージョン0.8.0以降で、以前はwires
)、その絶対パスをJavaコードのシステムプロパティとして変数webdriver.gecko.driver
にエクスポートします。
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
幸いなことに、ライブラリ WebDriverManager はあなたのためにこの仕事をすることができます、すなわちあなたのマシン(Linux、Mac、またはWindows)のための適切なMarionetteバイナリをダウンロードして適切なシステムプロパティの値このライブラリを使用するには、この依存関係をプロジェクトに含める必要があります。
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.6.1</version>
</dependency>
...そしてWebDriverを使う前にプログラムの中でこの行を実行してください。
WebDriverManager.firefoxdriver().setup();
WebDriverを使用したJUnit 4テストケースの完全な実行例は次のとおりです。
public class FirefoxTest {
protected WebDriver driver;
@BeforeClass
public static void setupClass() {
WebDriverManager.firefoxdriver().setup();
}
@Before
public void setupTest() {
driver = new FirefoxDriver();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
Marionetteが将来(WebDriver 3以降およびFirefox 48以降)の唯一の選択肢になることを考慮に入れてくださいが、現在(執筆時点でのバージョン0.9.0)はそれほど安定していません。詳細については、 Marionetteロードマップ をご覧ください。
UPDATE
Selenium WebDriver2.53.1は、2016年6月30日にリリースされました。FirefoxDriver
は、Firefox47.0.1をブラウザとして使用しています。
Firefox 46.0.1を使ってみてください。 Selenium 2.53と最適です
https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
同じ問題があり、 サポートが廃止された ので、ドライバを切り替える必要があることがわかりました。テストを実行するには、Firefoxドライバの代わりに Marionette ドライバを使用する必要があります。私は現在自分でセットアップを進めていますが、実例があるときに必要な場合はいくつか提案されたステップを投稿することができます。
Mac上の私のJava環境でこれを機能させるために私が従ったステップはここにあります(私のLinuxインストール(Fedora、CentOSおよびUbuntu)で私のために同様に働きました):
mkdir -p /opt/marionette
)。$PATH
を更新します(必要に応じて.bash_profile
も編集します)。chmod +x /opt/marionette/wires-x.x.x
を実行可能にしてくださいクイックノート
まだ期待通りに動作していませんが、少なくともブラウザは現在起動しています。その理由を理解する必要があります - 今はそれを機能させるためにテストを書き直す必要があるようです。
Javaスニペット
WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
あなたがMacを使っているのならbrew install geckodriver
してください、そして、あなたは行っています!
Homebrewを使用してOSXを使用している場合は、brew caskを介して古いFirefoxバージョンをインストールできます。
brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want
インストールしたら、ApplicationsディレクトリにあるFF実行可能ファイルの名前を "Firefox"に変更するだけです。
より詳しい情報はgit repo homebrew-firefox にあります。 オリジナルの樽 を作成するための smclernon への小道具。
万が一誰かがC#でMarionetteを使用する方法を疑問に思っている場合。
FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
service,
option,
TimeSpan.FromSeconds(30));
Selenium v53 はまだその機能を提供していないため、FirefoxOptionsをオーバーライドして機能を追加したりFirefoxプロファイルを設定したりする機能を提供します。
public class FirefoxProfileOptions : FirefoxOptions
{
private DesiredCapabilities _capabilities;
public FirefoxProfileOptions()
: base()
{
_capabilities = DesiredCapabilities.Firefox();
_capabilities.SetCapability("marionette", this.IsMarionette);
}
public FirefoxProfileOptions(FirefoxProfile profile)
: this()
{
_capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
}
public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
{
_capabilities.SetCapability(capabilityName, capabilityValue);
}
public override ICapabilities ToCapabilities()
{
return _capabilities;
}
}
注:profileで起動してもFF 47では機能しません。FF 50 Nightlyでは機能します。
しかし、テストをMarionetteを使用するように変換しようとしましたが、ドライバの実装が完了していないかバグがあるため、現時点では実行できません。現時点ではFirefoxをダウングレードすることをお勧めします。
Firefox 47.0はWebドライバの使用を中止しました。
最も簡単な解決策はFirefox 47.0.1とWebdriver 2.53.1に切り替えることです。この組み合わせもまたうまくいきます。事実、 https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/によると、Webdriverの互換性を回復することが47.0.1リリースの背後にある主な理由でした。 .
によると、新しいSeleniumライブラリが出ました、 https://github.com/SeleniumHQ/Selenium/issues/2110
ダウンロードページ http://www.seleniumhq.org/download/ はまだ更新されていないようですが、のマイナーバージョンに1を追加することでリンクは、私はC#のバージョンをダウンロードすることができます: http://Selenium-release.storage.googleapis.com/2.53/Selenium-dotnet-2.53.1.Zip
Firefox 47.0.1で動作します。
ちなみに、./go //javascript/firefox-driver:webdriver:run
を実行することで、GitHubのmasterブランチからwebdriver.xpi Firefox拡張機能だけをビルドできました。エラーメッセージが表示されましたが、build/javascript/firefox-driver/webdriver.xpi fileこれは、名前の衝突を避けるために名前を変更し、FirefoxProfile.AddExtensionメソッドで正常にロードすることができます。 Seleniumライブラリ全体を再構築する必要なしに、これは合理的な回避策でした。
そのFF47号 https://github.com/SeleniumHQ/Selenium/issues/2110
FF 46以下にダウングレードしてください(またはFF48開発者を試してください https://developer.mozilla.org/en-US/Firefox/Releases/48 )
ダウングレードする方法についての指示: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04 -precise-pangolin / またはMacを使用している場合は、このスレッドの他の人が示唆しているようにbrewを使用してください。
このコードを使ってみることができます、
private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");
driver = new FirefoxDriver();
Selenium 3.0.0にアップグレードしました。Firefoxのバージョンは49.0.1です。
Geckodriver.exeは、 https://github.com/mozilla/geckodriver/releases からダウンロードできます。
Zipファイルのみ、geckodriver-v0.11.1-win64.Zipファイル、またはwin32ファイルをシステムごとにダウンロードして、フォルダに展開してください。
そのフォルダのパスを「ドライバへのパス」の引用符に入れます。パスにgeckodriver.exeを入れることを忘れないでください。
2016年9月現在
Firefox 48.0
とSelenium==2.53.6
はエラーなく正常に動作します
FirefoxをUbuntu 14.04
のみでアップグレードする
Sudo apt-get update
Sudo apt-get upgrade firefox
これが 問題がWireshar kでどのように見えたかです。
2.53.1をロードするだけですべてがうまくいきます。
最善の解決策はSelenium 3.0.0にアップデートし、geckodriver.exeをダウンロードし、Firefox 47以降を使用することです。
Firefoxの初期化を次のように変更しました。
string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe");
string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
File.Copy(geckoPathTest, geckoPath);
Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
_firefoxDriver = new FirefoxDriver();
私は、これを解決するために、私の通常の(安全な、最新の)Firefoxのインストールに加えて、最終的に追加の古いバージョンのFirefox(テストのためだけに使われる)をインストールしました。
これにはWebドライバがFirefoxバイナリを見つけることができる場所を知ることが必要です。これはwebdriver.firefox.bin
プロパティを通して設定することができます。
私にとってうまくいったこと(インストールフォルダとしてのmac、maven、/tmp/ff46
):
mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify
Firefoxの古いバージョンを専用のフォルダにインストールするには、フォルダを作成し、そのフォルダでFinderを開いてFirefox dmgをダウンロードし、それをそのFinderにドラッグします。
Ubuntu 15では、Selenium 2.53.6
がfirefox 44
と連携することを確認できます。