テストを実行するボックスがあります。 Jenkinsが実行中の特定のジョブに記述されているコマンドを入力して実行するようです。
ここで私は私のSelenium Webdriverテストを実行しようとしています、しかしそれは私がFirefoxの起動にエラーがあることを私に教えてくれます。最終的なアイデアは、このボックスでWebテストを完全に実行し、さらにエラーのスクリーンショットを撮ることです。
私はSelenium-Java-2.25.jar、Firefox 10、Linux OSを使用しています。
おもしろいことに、私は手動でボックスにsshでログインし、(Xトンネルを取得するために)一時的に他のユーザーからマジッククッキーをコピーし、export DISPLAY=mydisplay:1.0
を実行し、そしてantを使って私のSeleniumテストを立ち上げます。これでFirefoxが起動し、テストは問題なく終了します。
ここにはまったく同じ問題を抱えているように思われるさまざまなスレッドがありますが、それらのほとんどを試したことがあると思います。これが私がしたことです:
ボックスを再起動し、VNCでログインし直します。
Seleniumテストを実行する前に実行するためにJenkinsにbashスクリプトを配置しました。 bashスクリプトは基本的にexport DISPLAY=mydisplay:1.0
を実行するだけです。 xclock
も実行します。 VNCにxclockが表示されているのを確認できるので、これは機能します。
iptablesはオフになっています
firefoxは正しく/ usr/bin/firefoxにあります
sshd_configはX11Forwardingがtrueであることを示しています。
おそらくFirefoxをダウングレードすることは何人かの人々を助けました、しかし私はこれをしたくありません。とにかくWebドライバはFF 10をサポートするべきです。
しかしながら、上記のいずれも問題を解決しない。
Localhostのポート7055も存在しないようです。
netstat -an | grep 7055
- 何も印刷されない
これは私の/ etc/hostsが言うことです:
1 127.0.0.1 localhost.localdomain localhost
2 ::1 localhost6.localdomain6 localhost6
おそらくそれはlocalhostと関係があります:7055存在しませんか?私はここからどこへ行くべきかわからない。それでも、display: :0.0
を指定したときにエラー出力がmydisplay:1.0
を探していると表示するのはなぜですか?
そして最後に私が受け取るエラー出力:
[testng] org.openqa.Selenium.firefox.NotConnectedException: Unable to connect to Host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Error: cannot open display: :0.0
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Error: cannot open display: :0.0
[testng]
[testng] at org.openqa.Selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.Java:109)
[testng] at org.openqa.Selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.Java:245)
[testng] at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:109)
[testng] at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:185)
[testng] at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:178)
[testng] at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:174)
[testng] at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:92)
[testng] at com.test.webtest.browser.BrowserFactory.createBrowser(BrowserFactory.Java:24)
[testng] at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[testng] at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
[testng] at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
[testng] at Java.lang.reflect.Method.invoke(Method.Java:601)
あなたがこの問題を解決したかどうか知りません、しかし私は反対側から同じ問題を解決しました。
SeleniumとFirefoxは互いに話すのが難しいようです。Firefoxは多くのリリースで「進化」するので、下位互換性と上位互換性が常に保証されるとは限らず、互換性がないと常に同じエラーが発生します。
私の問題は、FF 15からFF 16に移行したときに始まりました。Ubuntu上で実行すると、これは他のアップグレードと一緒に自動で行われますが、これが重大な変化だったと思います。
問題はSelenium 2.24.1からSelenium 2.25.0に移動することで解決されました
Seleniumの変更点は、古いjarファイルの代わりにjarファイルをダウンロードして実行することなので、迅速で簡単なトラブルシューティングツールとして試してみる価値があります。それでも解決しない場合は、元に戻すだけです。あなたのケースでは、私はSeleniumのどのバージョンを試すべきかわからないが、私は2.24がFF 10で動作するはずだと思う。
私が過去に発見したもう一つの問題は、FirefoxがUbuntu上でrootとして動かないということです。これは、Seleniumがサービスとして実行されている場合、またはおそらくbashスクリプトまたはcronジョブから起動された場合に発生します。これはなぜそれがあなたのために動くがジェンキンスのために動かないかを説明するかもしれません。
私は同様の問題を抱えていました。多分この答えはあなたを助けるでしょう。
2つの異なるエラーが発生しているようです。
Unable to connect to Host 127.0.0.1 on port 7055
Error: no display specified
Unable to connect
エラーの原因は、Selenium ServerのバージョンがFirefoxの新しいバージョンでの作業方法を知らないためです。新しいバージョンのFirefoxをサポートする新しいバージョンのSelenium Serverをダウンロードする必要があります。
Error: no display specified
エラーの原因はFirefoxが起動されているということですが、リモートホスト上で実行されているXサーバー(GUI)がありません。 X11転送を使用してリモートホスト上でFirefoxを実行することはできますが、ローカルホスト上に表示することができます。 Mac OS Xでは、X11転送を使用するためには XQuartz をダウンロードする必要があります。
Seleniumでテストする前に、ブラウザの互換性を確認する必要があります。
https://github.com/SeleniumHQ/Selenium/blob/master/Java/CHANGELOG
これは上記の質問に答えるのに役立つかもしれません。
FireFox 19用の最新のSelenium jar(2.30)を入手してください。
最新のjarファイル(執筆時点で2.31)は、こちらからダウンロードできます。 https://code.google.com/p/Selenium/downloads/list
Firefoxを以前のSelenium-WebDriverでうまく動作していた古いバージョンにダウングレードすることで、この問題を解決しました。私の場合は、Firefox 18にダウングレードする必要があり、このバージョンはSelenium 2.27で動作しました
これは、古いバージョンのFirefoxを入手するためのリンクです。 https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
Firefox 47とSelenium 2.53としたところ、同じエラーが発生しました。私の解決策はFirefox 47をFirefox 46に変更することでしたが、問題は解決しました。
この問題は長い間私を悩ませてきました、そしてFirefoxの場合の一つの実用的な解決策はアップグレードされたFirefoxドライバを使うことでした。
あなたのfirefoxのアップグレードが自動的にされている場合は、たまにこの問題に直面するかもしれません。 Firefoxの開発速度が速すぎる、あるいは下位互換性を気にしていないようです。
古いスクリプトでこの問題が発生するたびに、Firefoxのバージョンが変更されているかどうかを確認します - ほとんどの場合それは変更されています。
それから私はSelenium firefoxドライバレポのためにmavenレポに行きます - http://mvnrepository.com/artifact/org.seleniumhq.Selenium/selenium-firefox-driver 最新バージョンをダウンロードしてください。
またはpom.xmlを(mavenを使用している場合は)今すぐ新しいFirefoxドライバでアップデートしましょう - 2.40.0
自動化されたアップデートをfirefoxから明示的にブロックしない限り、この問題を回避する簡単な方法はありません(Macでは[環境設定]でこれを行うことができます) - Advanced - Update - [Check for updates]を選択します。 )
スクリプトが自動モードで実行されている場合は、更新を無効にすることをお勧めします。しかしこれは他の問題を引き起こすかもしれません。ほとんどの人/ユーザーはFirefoxのアップデートがデフォルトで有効になっているかもしれません。だからあなたのアプリケーションは実際にそれ以降のバージョンではテストされていない。
Selenium jarファイルを更新し、Selenium 2.31.0をダウンロードする
この問題はSeleniumの人々によって解決されました。
これは互換性の問題でした。
乾杯
スクリプトの問題点は、スクリプトに使用されている環境がテストに使用されている環境と同じではないことです。したがって、環境変数を設定してもテストには影響しません。
変数を正しく設定するには、Jenkinsで設定する必要があります。 [Manage Jenkins]> [Manage Nodes]> [Master]> [Configure]に移動します。 環境変数チェックボックスをオンにしてから、名前ボックスにDISPLAYと入力し、値を1.0に設定します。
さらに、あなたはパーミッションを設定する必要があります、ターミナルでxhost +
を使ってあなたのxhostアクセスコントロールを無効にすることを試みなさい。
私も同じ問題に直面しました。私たちまたはウェブドライバが開いたときはいつでもFFブラウザは更新があればそれをチェックします。その場合、実行時間中に更新しようとすると、Seleniumのバージョンを適切に更新していないからといって、正しく更新されていてもエラーになります。
「 http://docs.seleniumhq.org/download/ 」に移動して最新バージョンをダウンロードしてください。確認してみてください、問題は確かに解決されるでしょう。 :)
私はdockerを実行しているのとまったく同じ問題を抱えていましたが、私はあなたが言及したエラーの前にログで解決策を見つけました。
Selenium_1 | 2016-11-11 11:19:34,498 DEBG 'xvfb' stderr output:
Selenium_1 | (EE)
Selenium_1 | Fatal server error:
Selenium_1 | (EE) Server is already active for display 99
Selenium_1 | If this server is no longer running, remove /tmp/.X99-lock
Selenium_1 | and start again.
Selenium_1 | (EE)
私はアドバイスに従い、問題は整理されました。
私は同じエラーを得ました。私はSelenium-Javaバージョン2.25.0とFirefoxバージョン18.0.2を使用しました。 Selenium-Javaのバージョンを2.30.0に変更しましたが、現在は動作しています。
私は同じエラー「ポート7055でホスト127.0.0.1に接続するためのSelenium_Unable」を得ました。
この問題を解決するには、 http://docs.seleniumhq.org/download/ にある新しいjarファイルを使用してください。 Java、C#、phpなどに対応しています... Firefox 27.0.1には2.39.0のドライババージョンが必要です。
JenkinsにXvnc Pluginをインストールするだけです。問題は解決されるべきです。
私も同じ問題を抱えていましたが、Firefoxのバージョンを35.0.1にダウングレードした後の問題は解決され、私のSeleniumのバージョンは2.43です。
知識ベースへの追加竹についても同じ問題がありました。問題は竹の環境特性を使用して解決されました。
DISPLAY=":1"
Pom.xmlでシステムプロパティとして値を追加したり、コマンドラインを実行したりしても機能しませんでした。
端末を再起動するだけです。ターミナルは他に何も吊り下げられていません。その後はすべてうまくいくでしょう
今日も同じ問題がありました。修正するには、Firefoxのバージョン51を47にダウングレードしてください。
注意:私はVirtual Box内でLinux Ubuntu Mateを使用していますが、Hostは別のUbuntu Mateです。すべてのOSは64ビットでFirefoxもそうです。
私はFirefox 38で同じ問題を抱えていました。
以下のバージョン依存関係を使用した後、私は問題を解決することができました。
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-firefox-driver</artifactId>
<version>2.53.0</version>
</dependency>
これはディスプレイの問題になる可能性があると思います。ボックスにGUIが表示されていない場合は、Selenium WebドライバからFirefoxを起動するとこのエラーが発生します。
これを解決するには、まずXvfb [yum install Xvfb -y
](仮想ディスプレイドライバ)をボックスにインストールします。それからxvfv-run -a -d <your test execution command>
でjenkinsからテストを実行してください。これはブラウザを仮想ディスプレイバッファで起動します。 Selenium Webドライバを使用してスクリーンショットを取得することもできます。
私も3日間このエラーで立ち往生していて、ついにそれを考え出しました。あなたが私が与えた答え をここで見ることができます 。このリンクが役に立つことを願います。 このリンクからブラウザの互換性を確認できます
Windowsの場合:あなたのFirefoxの "bitness"もチェックしてください。 Firefox 43.0.1 64ビットはSelenium 2.50.0では動作しません。 Firefox 43.0.1 32bitでうまく動作しています...
これは古いバージョンが原因で発生します。ブラウザを最新バージョンに更新し、Selenium webdriverパッケージを最新バージョンに更新するだけです。
Seleniumスクリプトが実行されていない場合は、Selenium jarを更新してください。現在私はSelenium-Java-2.43.0-srcsを使用しています。
今それはうまく働いています
それはffの異なるバージョンで起こります。私はSelenium-server-standalone-2.41.0.jarとSelenium-Java-2.41.0.Zipを使用して最新のffバージョン39を使用しています。
最新のサーバーとクライアントのjarファイル をここで入手してください 私はそれぞれサーバーとクライアントのバージョン2.47.0と2.47.1を使用しました。そしてブーム!出来た。
Firefox Setup 18.0.exeをインストールしました
これが、IWebDriverの静的プロパティを使用し、それを複数のテストメソッドから呼び出したときの動作です。
public class LanguageMenu
{
private static IWebDriver drv;
static LanguageMenu()
{
drv = Driver.Instance;
}
...
public static void English()
{
drv.FindElement(By.Id("mvc_lang_en"));
el.Click();
}
public static void Rusian()
{
...
}
...
}
好き
[TestMethod]
public void Language_SwitchTo_English()
{
LanguageMenu.English();
Assert.IsTrue(ContactPage.IsAt("Contact"));
}
[TestMethod]
public void Language_SwitchTo_Rusian()
{
LanguageMenu.English();
Assert.IsTrue(ContactPage.IsAt("Контакт"));
}
解決策
呼び出しテストメソッドごとに、Driverの新しいインスタンスを作成します。
private static void English()
{
var drv = Driver.Instance;
var el = drv.FindElement(By.Id("mvc_lang_en"));
el.Click();
}