web-dev-qa-db-fra.com

org.openqa.Selenium.WebDriverException: délai d'attente au démarrage du serveur de pilotes Informations de construction: version: 'unknown', révision: 'unknown'

Alors que tout fonctionne sur ma machine, lorsque j'apporte le projet dans lequel je travaille sur mon serveur, Selenium et Chromedriver ne démarrent pas, ce qui provoque l'exception suivante.

2018-08-31 09:16:06,578 ERROR [stderr] (Exec Stream Pumper) /home/app.conf/homebooks2/chromedriver: 1: /home/app.conf/homebooks2/chromedriver: Syntax error: Unterminated quoted string
2018-08-31 09:16:26,570 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /crawlerClass/myCrawler/5922: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.openqa.Selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: Host: 'shaula', ip: '127.0.1.1', os.name: 'Linux', os.Arch: 'i386', os.version: '3.16.0-44-generic', Java.version: '1.8.0_92'
Driver info: driver.version: ChromeDriver
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.Java:982)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.Java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:707)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.Java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:790)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.Java:85)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.Java:129)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.Java:81)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.Java:107)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.Java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.Java:131)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:317)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.Java:127)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.Java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.Java:114)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.Java:137)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.Java:111)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.Java:170)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.Java:63)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.Java:200)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.Java:116)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.Java:64)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.Java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.Java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.Java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at it.myproject.security.web.utils.AjaxConcurrentSessionFilter.doFilter(AjaxConcurrentSessionFilter.Java:70)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.Java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.Java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.Java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.Java:177)
    at org.springframework.security.web.debug.DebugFilter.invokeWithWrappedRequest(DebugFilter.Java:90)
    at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.Java:77)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.Java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.Java:262)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.Java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.Java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.Java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.Java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.Java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.Java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.Java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.Java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.Java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.Java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.Java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.Java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.Java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.Java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.Java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.Java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.Java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.Java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.Java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.Java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.Java:292)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.Java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.Java:138)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.Java:135)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.Java:48)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.Java:43)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.Java:44)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.Java:272)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.Java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.Java:104)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.Java:202)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.Java:805)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:745)
Caused by: org.openqa.Selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: Host: 'shaula', ip: '127.0.1.1', os.name: 'Linux', os.Arch: 'i386', os.version: '3.16.0-44-generic', Java.version: '1.8.0_92'
Driver info: driver.version: ChromeDriver
    at org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable(DriverService.Java:193)
    at org.openqa.Selenium.remote.service.DriverService.start(DriverService.Java:179)
    at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.Java:79)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:548)
    at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:212)
    at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:130)
    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 it.myproject.initCrawler(ImmobiliareItController.Java:127)
    at it.myproject$$FastClassBySpringCGLIB$$c2524ba.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.Java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.Java:721)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.Java:157)
    at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.Java:52)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.Java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.Java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.Java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.Java:656)
    at it.myproject$$EnhancerBySpringCGLIB$$a6350cf3.initCrawler(<generated>)
    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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.Java:205)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.Java:133)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.Java:116)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.Java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.Java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.Java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.Java:963)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.Java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.Java:970)
    ... 84 more
Caused by: org.openqa.Selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:4668/status] to be available after 20000 ms
    at org.openqa.Selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.Java:100)
    at org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable(DriverService.Java:188)
    ... 116 more
Caused by: Java.util.concurrent.TimeoutException
    at Java.util.concurrent.FutureTask.get(FutureTask.Java:205)
    at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.Java:156)
    at org.openqa.Selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.Java:75)
    ... 117 more

Tout fonctionne comme ceci: l'utilisateur, pour lancer le robot, est supposé cliquer sur un bouton. Ensuite, avec JavaScript, je passe un appel Ajax à une méthode spécifique d'une classe spécifique qui contient mon robot d'exploration pour l'initialisation, comme suit.

[...]
public Map initCrawler(Things that I give as input) throws InterruptedException, ApiException, IOException {
    System.setProperty("webdriver.chrome.driver",  BackEndProperties.getProperty("chrome_driver_path") );
    final ChromeOptions chromeOptions = new ChromeOptions();
    //chromeOptions.setBinary("/usr/bin/chromium-browser"); 
    chromeOptions.addArguments("--headless");
    chromeOptions.addArguments("--disable-extensions");
    chromeOptions.addArguments("--disable-gpu");
    chromeOptions.addArguments("--no-sandbox");
    [...]

Comme je l'ai dit, tout fonctionne bien sur ma machine mais pas sur le serveur. Faire une recherche sur le Web m'a aidé à comprendre que le problème qui se posait à tout le monde était résolu en mettant à niveau l'ancienne instance de chrome sur le serveur et c'est ce que j'ai fait (et j'ai également téléchargé le dernier ChromeDriver disponible), mais cela ne résout rien ..__ Je pensais aussi en essayant un autre navigateur pour voir si cela pouvait changer quelque chose… Est-ce que quelqu'un a des indices avec lesquels je pourrais travailler?

2
Gianmarco F.

Ce message d'erreur ...

2018-08-31 09:16:26,570 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /crawlerClass/myCrawler/5922: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.openqa.Selenium.WebDriverException: Timed out waiting for driver server to start.

... implique que le ChromeDriver n'a pas pu lancer/générer une nouvelle session WebBrowser i.e. Navigateur Chrome.

Votre exception de base est la org.openqa.Selenium.WebDriverException en tant que votre programme délai d'attente au démarrage du serveur de pilote pour la raison suivante:

  • Votre version JDK est 1.8.0_92, ce qui est joli ancien.

Il y a donc un décalage évident entre le JDK v8u92 et le courant Selenium Client v3.14.0.

Solution

3
DebanjanB

Il existe un autre aspect de l’incompatibilité de version entre JDK et Selenium: parfois, la version mineure de JDK peut être trop élevée (par exemple, JDK 8u201 et Selenium 3.141.59 ne semblent pas compatibles, mais 8u192 fonctionne). Vous devrez peut-être rétrograder la version secondaire du JDK par rapport à celle qui a été publiée avant la date de publication de la version de Selenium que vous utilisez.

0
YumeNoShizuku

J'ai rencontré cette erreur lors de la création de chromedriver après avoir tenté d'écrire le journal dans un fichier:

System.setProperty("webdriver.chrome.driver", DriverFactory.getChromeDriverPath())
System.setProperty("webdriver.chrome.logfile", "${System.getenv('HOME')}/Documents")

L'erreur apparaît à cette ligne:

WebDriver driver1 = new ChromeDriver()

mais j'ai oublié d'ajouter le nom de fichier. Après cela, tout était rentré dans l'ordre:

System.setProperty("webdriver.chrome.logfile", "${System.getenv('HOME')}/Documents/chromedriver.log")
0
Mate Mrše

Juste un scénario moins probable où la même erreur est commise est une erreur humaine stupide.

Pour tous ceux qui utilisent phantomjs WebDriver et qui font face à cette erreur, il faut vérifier s’ils donnent le bon chemin au phantomjs.exe. Cette erreur sera générée lorsque le chemin de Chromedriver est créé et que le pilote PhantomJs est instancié.

0
Vaibs