NightwatchJS / geckodriver / selenoid:在Firefox上执行测试时,从selenium服务器检索新会话时出错,

时间:2018-02-22 06:09:55

标签: selenium nightwatch.js geckodriver selenoid

设置信息: OS - MacOS HighSierra - 10.13.3 DockerCE for Mac - 17.12.0-ce-mac49 Selenoid,Selenoid-ui - 最新 Firefox - 58,geckodriver - 0.191(0.190,0.170) Chrome - 63,ChromeDriver 2.34.522932 Selenium独立服务器 - 3.9.1

  

在本地设置中,测试可以通过Firefox和Chrome成功运行   使用相同的geckodriver。

在远程设置时,我使用Firefox时测试失败并使用Chrome成功。

来自NightwatchJS的详细日志

public static int compareInChinese(String str1, String str2) {
    Collator collator = Collator.getInstance(new Locale("zh", "CN"));
    collator.setDecomposition(Collator.NO_DECOMPOSITION);
    collator.setStrength(Collator.PRIMARY);
    return collator.compare(str1, str2);
}

从Docker容器跟踪日志

Prasannas-MacBook-Air:sim1 prvenkat$ ./node_modules/nightwatch/bin/nightwatch  ./src/test/login.js --verbose

[Test / Login] Test Suite
=============================

Running:  Validate Login page
INFO Request: POST /wd/hub/session
 - data:  {"desiredCapabilities":{"browserName":"firefox","javascriptEnabled":true,"acceptSslCerts":true,"platform":"ANY","moz:firefoxOptions":{"log":{"level":"trace"}},"version":"57.0","name":"Test / Login"}}
 - headers:  {"Content-Type":"application/json; charset=utf-8","Content-Length":199}
INFO Response 200 POST /wd/hub/session (3439ms) { value:
   { sessionId: '43ba7a2a-8fac-4ebb-8a8f-e046e5534944',
     capabilities:
      { acceptInsecureCerts: false,
        browserName: 'firefox',
        browserVersion: '57.0',
        'moz:accessibilityChecks': false,
        'moz:headless': false,
        'moz:processID': 37,
        'moz:profile': '/tmp/rust_mozprofile.i3MIoxBzkGAM',
        'moz:webdriverClick': false,
        pageLoadStrategy: 'normal',
        platformName: 'linux',
        platformVersion: '4.9.60-linuxkit-aufs',
        rotatable: false,
        timeouts: { implicit: 0, pageLoad: 300000, script: 30000 } } } }

Error retrieving a new session from the selenium server

Connection refused! Is selenium server started?
{ value:
   { sessionId: '43ba7a2a-8fac-4ebb-8a8f-e046e5534944',
     capabilities:
      { acceptInsecureCerts: false,
        browserName: 'firefox',
        browserVersion: '57.0',
        'moz:accessibilityChecks': false,
        'moz:headless': false,
        'moz:processID': 37,
        'moz:profile': '/tmp/rust_mozprofile.i3MIoxBzkGAM',
        'moz:webdriverClick': false,
        pageLoadStrategy: 'normal',
        platformName: 'linux',
        platformVersion: '4.9.60-linuxkit-aufs',
        rotatable: false,
        timeouts: [Object] } } }

我用三种不同的geckodriver测试了场景,但结果是一样的。 请帮忙。

2 个答案:

答案 0 :(得分:1)

错误说明了一切:

1519276847986   geckodriver     INFO    Listening on [::]:41809
1519276848032   webdriver::server       DEBUG   -> HEAD /
1519276848160   webdriver::server       DEBUG   <- 404 Not Found {"value":{"error":"unknown command","message":"HEAD / did not match a known command","stacktrace":"stack backtrace:\n   0:           0x4edb3c - backtrace::backtrace::trace::hc4bd56a2f176de7e\n   1:           0x4edb72 - backtrace::capture::Backtrace::new::he3b2a15d39027c46\n   2:           0x440ac8 - webdriver::error::WebDriverError::new::ha0fbd6d1a1131b43\n   3:           0x43a665 - <webdriver::server::HttpHandler<U> as hyper::server::Handler>::handle::h343049f2e1aa3f13\n   4:           0x404b4d - std::sys_common::backtrace::__rust_begin_short_backtrace::he840f14c79c8e321\n   5:           0x40bee6 - std::panicking::try::do_call::hdd1d6b985699ef9d\n   6:           0x5e6a6c - panic_unwind::__rust_maybe_catch_panic\n                        at /checkout/src/libpanic_unwind/lib.rs:99\n   7:           0x41ef02 - <F as alloc::boxed::FnBox<A>>::call_box::hae8ac6ade91dedb6\n   8:           0x5df13b - alloc::boxed::{{impl}}::call_once<(),()>\n                        at /checkout/src/liballoc/boxed.rs:692\n                         - std::sys_common::thread::start_thread\n                        at /checkout/src/libstd/sys_common/thread.rs:21\n                         - std::sys::imp::thread::{{impl}}::new::thread_start\n                        at /checkout/src/libstd/sys/unix/thread.rs:84"}}  

由于此问题, SESSION 获得 DELETED ,如下所示:

2018/02/22 05:20:50 [0] [SESSION_CREATED] [unknown] [43ba7a2a-8fac-4ebb-8a8f-e046e5534944] [http://127.0.0.1:41809] [1] [2.832759113s]
2018/02/22 05:21:50 [SESSION_DELETED] [43ba7a2a-8fac-4ebb-8a8f-e046e5534944]

错误堆栈跟踪清楚地提到 Selenium Language Binding Art 正在尝试连接 IPv6环回地址[::]:41809),这将无法正常工作根据@JimEvans comment在讨论主题Can't launch Selenium IE Driver after upgrading to version 3.9

中的3.9.x

解决方案

可能的解决方案是禁用 IPv6环回地址并在远程设置上启用 IPv4 并执行测试

答案 1 :(得分:0)

看看这里: https://github.com/nightwatchjs/nightwatch/issues/1628#issuecomment-357746215

这意味着您将不得不回退到3.8和selenium Grid设置。