何時間もインターネットを閲覧した後、解決策を見つけることができません。現在、いくつかの理由により、古いバージョンの Firefox (ここでは v41.0) でアプリをテストしようとしています。ハブ用の Seleniumの Docker イメージ (v3.4.0) とFirefoxノード用の Docker イメージ (v41.0)を渡しています。
古いバージョンの Firefox では Geckodriver に互換性がないことはわかっていますが、
{ "marionette": true }
Firefox ノードはグリッドに完全に接続しています。を使用して接続できますdocker exec -it <container-id> bash
が、テストの実行中に問題が発生します。
私はまだそれを見つけようとしていますが、ブロックされています。Dockerfile のコード: Firefox ノード用の hub.docker.com/r/selenium/node-firefox/~/dockerfile/ と、テスト用のコード (MochaJS を使用) を次に示します。
test.it("should redirect to Google with FIREFOX 41.0", () => {
var firefoxCap = Capabilities.firefox();
firefoxCap.set('marionette', true);
driver = new webdriver.Builder()
.usingServer(CONSTANTS.SELENIUM_HUB)
.withCapabilities(firefoxCap)
.build();
driver.get(CONSTANTS.GOOGLE_URL);
driver.wait(until.titleIs(CONSTANTS.GOOGLE_TITLE));
driver.wait(until.elementLocated(By.name(CONSTANTS.GOOGLE_SEARCH_KEY))).sendKeys(CONSTANTS.GOOGLE_SEARCH_VALUE);
driver.findElement(By.name(CONSTANTS.GOOGLE_SEARCH_BUTTON_NAME)).click();
driver.wait(until.titleIs(CONSTANTS.GOOGLE_SEARCH_TITLE));
driver.wait(until.elementLocated(By.tagName(CONSTANTS.GOOGLE_RES_LINK))).click();
driver.wait(until.titleIs(CONSTANTS.GOOGLE_TITLE));
driver.quit();
});
ここにログ
~/dev/selenium-grids/src$ mocha --timeout 30000 tests.js
Starting the tests...
Work with REMOTE URL
1) should redirect to Google with FIREFOX 41.0
0 passing (6s)
1 failing
1) Work with REMOTE URL should redirect to Google with FIREFOX 41.0:
WebDriverError: Missing 'marionetteProtocol' field in handshake
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'd4b3266d29f4', ip: '172.17.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-87-generic', java.version: '1.8.0_131'
Driver info: driver.version: FirefoxDriver
remote stacktrace: stack backtrace:
0: 0x5787ed - backtrace::backtrace::trace::h59229d13f6a8837d
1: 0x578942 - backtrace::capture::Backtrace::new::h23089c033eded8f0
2: 0x450aec - geckodriver::marionette::MarionetteHandler::create_connection::h6f7058fccafe4367
3: 0x425c32 - <webdriver::server::Dispatcher<T, U>>::run::h8f5348b8f5f7c053
4: 0x40b22c - std::panicking::try::do_call::hb67c6fb6bcd96195
5: 0x5dc20a - panic_unwind::__rust_maybe_catch_panic
at /checkout/src/libpanic_unwind/lib.rs:98
6: 0x41b943 - <F as alloc::boxed::FnBox<A>>::call_box::h4100941edc372034
7: 0x5d48a4 - alloc::boxed::{{impl}}::call_once<(),()>
at /checkout/src/liballoc/boxed.rs:650
- std::sys_common::thread::start_thread
at /checkout/src/libstd/sys_common/thread.rs:21
- std::sys::imp::thread::{{impl}}::new::thread_start
at /checkout/src/libstd/sys/unix/thread.rs:84
at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:517:15)
at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:509:13)
at doSend.then.response (node_modules/selenium-webdriver/lib/http.js:441:30)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:169:7)
From: Task: WebDriver.createSession()
at Function.createSession (node_modules/selenium-webdriver/lib/webdriver.js:777:24)
at Function.createSession (node_modules/selenium-webdriver/firefox/index.js:667:55)
at createDriver (node_modules/selenium-webdriver/index.js:167:33)
at Builder.build (node_modules/selenium-webdriver/index.js:629:16)
at Context.test.it (tests_web.js:64:14)
at runTest (node_modules/selenium-webdriver/testing/index.js:164:22)
at node_modules/selenium-webdriver/testing/index.js:185:16
at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1085:7)
at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:184:14)
at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:3092:14)
at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:3075:27)
at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2982:25)
at node_modules/selenium-webdriver/lib/promise.js:676:7
at <anonymous>
From: Task: Work with REMOTE URL should redirect to Google with FIREFOX 41.0
at Context.ret (node_modules/selenium-webdriver/testing/index.js:183:10)
Closing the tests
「Googleはあなたの友達です」という理由で問題をグーグルで検索すると、「Firefoxのバージョンを更新してください」または「Seleniumのバージョンをダウングレードしてください」という回答しかありませんが、できません。誰かがそれを機能させる方法を説明できますか? 回避策でさえ受け入れられます。
ありがとう