2016-06-28 30 views
5

我试图做一个自动化测试我的网页,我用茉莉花与硒联合使用。Chromdriver2.21.2失败“没有这样的会话”

当在chrome上测试时(使用chromedriver),我得到了不可预知的下面的错误。它经常发生,当我运行一个测试套件时,它几乎无法完成。

伊夫发现这个bug的证据,但不能找到一个坚实的答案:https://bugs.chromium.org/p/chromedriver/issues/detail?id=732(当然这是对铬和我使用铬)

WebDriverError: no such session 
    (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.5 x86_64) 
    at WebDriverError (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:27:10) 
    at Object.checkLegacyResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:639:15) 
    at parseHttpResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:538:13) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:472:11 
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14) 
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14) 
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2820:25 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7 
    at process._tickCallback (node.js:369:9) 
From: Task: WebElement.isDisplayed() 
    at Driver.schedule (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:377:17) 
    at WebElement.schedule_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:1744:25) 
    at WebElement.isDisplayed (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:2110:17) 
    at driver.findElements.then.error (/Users/XXXXXXX/Documents/sweetmeeting/Test/front_end_testing/spec/dashboard_tester.js:251:34) 
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14) 
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14) 
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2775:27 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7 
    at process._tickCallback (node.js:369:9) 
+0

尝试使用最新的[ChromeDriver 2.22](http://chromedriver.storage.googleapis.com/index.html?path=2.22/) – Madhan

回答

8

我们也一直在这个问题挣扎了很久现在是时候,最近解决了它,所以我认为我会在这里发布它帮助别人。

对我们来说这是内存相关的。我们在Docker容器中运行我们的测试,并且docker默认dev/shm大小为64mb。增加这个解决了我们“没有这样的会议”问题。

我们使用docker compose,只是将shm_size:256M添加到docker-compose.yml文件中。

+3

有同样的问题,增加shm即使是2GB!没有帮助我,似乎不是由shm大小造成的错误 – ShockwaveNN

+0

你能解释它是如何与内存限制相关的吗?难道是由于内存不足导致驱动程序崩溃,然后Selenium绑定无法与其通信? –

5

我最近也遇到过这个异常。它最初似乎也是不确定的,但经过彻底调查后,我意识到,如果您调用ChromeDriver.Close()并尝试FindElement,它会以确定的方式发生。

在我的情况下,ChromeDriver.Close()在之前的测试的异常处理程序中被调用,该测试由于计时问题而发生。这只影响下一个测试,所以它增加了感觉这个问题是片状的。但正如我所说,我的调查显示这是确定性的。

话虽如此,这是我对这个错误的经验。可能是你的情况不同...

相关问题