【问题标题】:WebDriverException: Session not available and is not among the last 1000 terminated sessions with GeckoDriver and Firefox in SeleniumGridWebDriverException:会话不可用,并且不在 SeleniumGrid 中与 GeckoDriver 和 Firefox 的最后 1000 个终止会话中
【发布时间】:2018-11-16 03:33:34
【问题描述】:

问题

当我用 1 个实例执行 2 个 Firefox 节点时,每个节点都没有问题。但是,如果我使用 3 个或超过 3 个节点执行,则会出现以下错误。如果我在 chrome 中执行 100 个测试用例没问题,但似乎 Firefox 无法处理这么多测试用例。我有 64 GB RAM 的高配置服务器。我还观察到,3 个节点的内存消耗永远不会超过 70%

集线器

java -jar selenium-server-standalone-3.14.0.jar -role hub -browserTimeout 30 -timeout 90

节点

java -Dwebdriver.gecko.driver=./geckodriver.exe -jar selenium-server-standalone-3.14.0.jar -role node  -hub http://localhost:4444/grid/register -browser browserName=firefox, -port 7771

代码快照 1

private WebDriver firefoxDriver() {
WebDriver driver;
driver = null;
try{
    System.setProperty("webdriver.gecko.driver",Constants.sFirefoxDriverPath);

    FirefoxOptions opt= new FirefoxOptions();
    opt.setAcceptInsecureCerts(true);
    opt.setCapability("marionette", true);          
    driver = new RemoteWebDriver(new URL(Constants.sHubUrl), opt);
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}catch(Exception ex){           
    logger.error("Error in Firefox Driver --> " , ex);
    driver.close();
}
return driver;

}

代码快照 -2

private WebDriver firefoxDriver() {
WebDriver driver;
driver = null;
try{
    System.setProperty("webdriver.gecko.driver",Constants.sFirefoxDriverPath);
    DesiredCapabilities cap = DesiredCapabilities.firefox();
    cap.setCapability("marionette",true);
    cap.setVersion("ANY");
    cap.setAcceptInsecureCerts(true);
    driver = new RemoteWebDriver(new URL(Constants.sHubUrl), cap);
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}catch(Exception ex){           
    logger.error("Error in Firefox Driver --> " , ex);
    driver.close();
}
return driver;

}

错误信息

org.openqa.selenium.WebDriverException:会话 [4c40e39b-ac68-459a-ac33-f77d5f7d57f8] 不可用并且不在最后 1000 个终止的会话中。 活动会话是[ext。密钥 6ee03f37-a595-4d82-a0e3-2aed3ff42df5,分机。密钥 6db69284-3582-4c6a-950b-7ca4e0bbc059,分机。关键 5d3d5a41-101e-4bfc-858a-b20ae0e916fb] 构建信息:版本:'3.14.0',修订:'aacccce0',时间:'2018-08-02T20:19:58.91Z' 系统信息:主机:'XXXXXX',ip:'XXX.XX.XXX.XXX',os.name:'Windows Server 2012 R2',os.arch:'amd64',os.version:'6.3',java。版本:'1.8.0_192' 驱动程序信息:org.openqa.selenium.remote.RemoteWebDriver 功能 {acceptInsecureCerts: true, browserName: firefox, browserVersion: 63.0.1, javascriptEnabled: true, moz:accessibilityChecks: false, moz:geckodriverVersion: 0.23.0, moz:headless: false, moz:processID: 14432, moz:profile: C:\Users\XXXX\AppData\Local\..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, platformVersion: 6.3, rotatable: false, setWindowRect: true ,超时:{隐式:0,pageLoad:300000,脚本:30000},unhandledPromptBehavior:关闭并通知,webdriver.remote.sessionid:4c40e39b-ac68-459a-ac33-f77 ...} 会话 ID:4c40e39b-ac68-459a-ac33-f77d5f7d57f8 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) 在 org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteTimeouts.implicitlyWait(RemoteWebDriver.java:776) 在 com.HCF_AutomationFramework_Selenium.keyWords.kDrivers.firefoxDriver(kDrivers.java:134) 在 com.HCF_AutomationFramework_Selenium.keyWords.kDrivers.kSelectDriver(kDrivers.java:42) 在 com.Modules.EmailQuote.TestCases.EmailQuote.EmailQuote_Referer_CustomiseCover(EmailQuote.java:93) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:643) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128) 在 org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker.java:129) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: java selenium firefox selenium-grid geckodriver


    【解决方案1】:

    有关您的用例的更多信息可能有助于我们以更好的方式分析问题。但是,您需要注意以下几个事实:

    • 使用以下配置启动 Selenium Grid Hub 似乎不够:

      -browserTimeout 30 -timeout 90

    • 您可以考虑将它们设置为以下默认值:

      -browserTimeout 0 -timeout 1800

    • 在启动 Selenium Grid Node 时,您需要提供 GeckoDriver绝对路径,如下所示:

      java -Dwebdriver.gecko.driver=./geckodriver.exe -jar selenium-server-standalone-3.14.0.jar -role node  -hub http://localhost:4444/grid/register -browser browserName=firefox, -port 7771
      
    • 您可以考虑将它们设置为默认值,如下所示:

      java -Dwebdriver.gecko.driver=C:/path/to/geckodriver.exe -jar selenium-server-standalone-3.14.0.jar -role node -port 7771 -hub http://localhost:4444/grid/register -browser "browserName=firefox, maxInstances=5, seleniumProtocol=WebDriver"
      

    其他注意事项

    根据以下讨论:

    这个错误似乎发生在:

    • Selenium Grid HubSelenium Grid Node客户端进程不同版本 启动/生成Selenium 客户端。

    解决方案

    确保Selenium Grid HubSelenium Grid Node客户端进程都使用相同版本的Selenium 客户端,即 Selenium v​​3.141.59

    【讨论】:

    • 有趣的是,当我的集线器在独立 v3.0.1 上并且节点在 3.141.59 上时,我没有收到此错误,但是如果我将集线器和节点更新为都使用 3.141 .59,导致此错误。
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多