org.openqa.selenium.SessionNotCreatedException:从 Jenkins CI 服务器执行时,从选项卡崩溃错误中的会话未创建异常

Posted

技术标签:

【中文标题】org.openqa.selenium.SessionNotCreatedException:从 Jenkins CI 服务器执行时,从选项卡崩溃错误中的会话未创建异常【英文标题】:org.openqa.selenium.SessionNotCreatedException: session not created exception from tab crashed error when executing from Jenkins CI server 【发布时间】:2018-09-06 04:10:09 【问题描述】:

我正在尝试从 Jenkins CI 服务器(使用 Gradle 构建)运行我的自动化测试,但浏览器立即崩溃并出现以下错误。当我从控制台运行 gradle test 时,它也会崩溃。现在,当我从 IDE (Idea) 运行相同的测试时,一切正常。我在完全相同的目录中运行完全相同的测试文件。 版本: 硒:3.11.0 分级:4.6 测试NG:6.14.2 铬:65.0.3325.181 Chrome 驱动程序:2.37

有人知道是什么原因造成的吗?

org.openqa.selenium.SessionNotCreatedException: session not created exception
from tab crashed
  (Session info: chrome=65.0.3325.181)
  (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.50 seconds
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'USNBDFV9K12', ip: '10.23.4.80', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'
Driver info: driver.version: ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:132)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
    at qa.appmanager.ApplicationManager.init(ApplicationManager.java:48)
    at qa.tests.misc_tests.TestBase.setUp(TestBase.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:401)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:134)
    at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:88)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy1.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)

【问题讨论】:

发布您的代码! Chrome 70 再次出现这种情况。 这发生在我使用 Chrome 71.0.3578.80 的 Python 项目中 【参考方案1】:

此错误消息...

org.openqa.selenium.SessionNotCreatedException: session not created exception from tab crashed (Session info: chrome=65.0.3325.181) (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 2.50 seconds Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z' System info: host: 'USNBDFV9K12', ip: '10.23.4.80', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131' Driver info: driver.version: ChromeDriver

错误堆栈跟踪清楚地显示您的 ChromeDriver 二进制详细信息没有被检测到,如下所示:

Driver info: driver.version: ChromeDriver

虽然您的 chromedriver=2.37.544315Chrome: 65.0.3325.181 兼容,但您的主要问题是 java.version: '1.8.0_131' strong> 这是古老的


解决方案

JDK 升级到最新级别 JDK 8u162 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。 使用CCleaner 工具在执行测试套件之前和之后清除所有操作系统杂务。 如果您的基础 Web Client 版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client。 进行系统重启。 执行您的@Test

从标签崩溃

from tab crashedChromium 团队 的 WIP(Work In Progress) 已经有一段时间了,这与 Linux 有关试图始终将 /dev/shm 用于不可执行的内存。以下是参考:

Linux: Chrome/Chromium SIGBUS/Aw, Snap! on small /dev/shm Chrome crashes/fails to load when /dev/shm is too small, and location can't be overridden 根据Comment61#Issue 736452,该修复似乎已通过 Chrome v65.0.3299.6

因此您可能需要升级到 Chrome v65.0.3299.6 或更高版本。

【讨论】:

感谢您的回复。当我从 IDE 运行测试时,它使用相同版本的 Java 并且工作得很好,所以肯定有别的东西。无论如何,更新到最新版本并没有什么坏处。 org.openqa.selenium.SessionNotCreatedException:从选项卡崩溃的会话未创建异常(会话信息:chrome=65.0.3325.181)(驱动程序信息:chromedriver=2.37.544315(730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),平台=Windows NT 6.1.7601 SP1 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:3.20 秒构建信息:版本:'3.11.0',修订:'e59cfb3',时间:'2018-03-11T20 :26:55.152Z 系统信息:主机:'USNBDFV9K12',ip:'10.23.4.80',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java。版本:'1.8.0_162' @Igor 查看我的答案更新,让我知道状态。 Windows 容器的类似问题 - ***.com/questions/55959477/…【参考方案2】:

请尝试使用 Chromedriver 版本 83.0.4103.39 (https://chromedriver.chromium.org/downloads)

【讨论】:

“请尝试...”读起来像是一个调试实验提案,与其说是答案,不如说是一个澄清问题。因此,这应该是一条评论 (meta.stackexchange.com/questions/214173/…)。请将其改写为有条件的答案,例如“如果您的问题的根本原因是……那么解决方案就是……”。【参考方案3】:

Chrome 崩溃问题修复:

此代码启动浏览器没有任何崩溃。 确保chrome exe与当前浏览器兼容。

    ChromeOptions options = new ChromeOptions()
    options.addArguments("--no-sandbox");
    driver = new ChromeDriver(options);
    driver.manage().window().maximize();
    driver.get("https://www.google.com");

【讨论】:

【参考方案4】:

就我而言,由于 DDoS 保护,它在我的 chromium 中崩溃了,

我可以用这里提供的答案Selenium webdriver: Modifying navigator.webdriver flag to prevent selenium detection来解决它

有些收获是,

    请检查源 html 数据。使用python:driver.page_source 如链接答案中所述,
from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.execute_script("Object.defineProperty(navigator, 'webdriver', get: () => undefined)")
driver.execute_cdp_cmd('Network.setUserAgentOverride', "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36')
print(driver.execute_script("return navigator.userAgent;"))
driver.get('https://www.httpbin.org/headers')

【讨论】:

【参考方案5】:

我遇到了同样的问题。以下操作有所帮助:

    将Java 11的版本放入maven中(安装时为Jenkins指示了相同的版本。Jenkins 11的Java版本来自oracle站点,而不是OpenJDK,环境变量JAVA_HOME必须指示此版本。Jenkins有OpenJDK 的问题。)。 添加一个git忽略文件(我忘了在项目开头添加它)。删除项目文件夹中的文件夹:target和idea。 (我也不认为这很重要..但我也重新打开了想法中的项目文件夹,运行测试,并选择保存 IML 配置。) 将更改推送到 github。 在 Jenkins 中,删除项目的当前程序集。好吧,从一个新的开始。

【讨论】:

以上是关于org.openqa.selenium.SessionNotCreatedException:从 Jenkins CI 服务器执行时,从选项卡崩溃错误中的会话未创建异常的主要内容,如果未能解决你的问题,请参考以下文章