私のマシンではすべてが機能しているのに、サーバーで作業しているプロジェクトを持ってくると、SeleniumとChromedriverが起動せず、次の例外が発生します
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
すべてがこのように機能します。クローラーを起動するためのユーザーは、ボタンをクリックすることになっています。次に、JavaScriptを使用して、初期化用のクローラーを保持する特定のクラスの特定のメソッドにAjax呼び出しを行います。
[...]
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");
[...]
私が言ったように、すべてが私のマシンではうまくいきますが、サーバー側ではうまくいきません。 Webを検索したところ、この問題が発生した人がサーバー上のクロムの古いインスタンスをアップグレードするだけで問題が解決したことを理解できました。これは私が行った(そして最新のChromeDriverもダウンロードした)ものの、何も解決しませんでした。それが何かを変えるかどうかを確かめるために別のブラウザを試すことも考えていました。誰かが私が働くかもしれないいくつかの手がかりを持っていますか?
このエラーメッセージ...
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.
...ChromeDriverが新しいWebBrowserieChrome Browserセッション。
あなたの基本例外はorg.openqa.Selenium.WebDriverExceptionをプログラム次の理由により、ドライバサーバーの起動を待機中にタイムアウトしました:
したがって、JDK v8u92と現在のSelenium Client v3.14.0の間には明らかな不一致があります。
@Test
。次のようなエラーが発生しました。WebDriverException:ドライバーサーバーの起動を待機中にタイムアウトしました。
既存のchromeブラウザインスタンスを閉じることで、私の場合の問題は解決しました。
ハブとノードを同じマシンで実行しています(Windows10)
JDKとSeleniumのバージョンの不一致にはもう1つの側面があります。JDKのマイナーバージョンが高すぎるの場合もあります(たとえば、JDK 8u201とSelenium 3.141.59は互換性がないようですが、8u192動作します)。 JDKマイナーバージョンをリリースされたバージョンにダウングレードする必要がある場合がありますbefore使用しているSeleniumのバージョンのリリース日。
このエラーは、chrome.exeではなく「chromedriver.exe」ファイルパスをコピーしたときに解決されました。私は誰かがそれを手伝ってくれることを願っています
正しい:
System.setProperty("webdriver.chrome.driver", "C:\\Users\\<username>\\Downloads\\chromedriver_win32\\chromedriver.exe");
違う:
System.setProperty("webdriver.chrome.driver", "C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default");
ログがファイルに書き込まれるようにしようとした後、chromedriverを作成するときにこのエラーが発生しました:
System.setProperty("webdriver.chrome.driver", DriverFactory.getChromeDriverPath())
System.setProperty("webdriver.chrome.logfile", "${System.getenv('HOME')}/Documents")
エラーは次の行に表示されます。
WebDriver driver1 = new ChromeDriver()
ファイル名を追加するのを忘れました。以下を実行すると、すべてが正常に戻りました。
System.setProperty("webdriver.chrome.logfile", "${System.getenv('HOME')}/Documents/chromedriver.log")
同様のエラーがスローされる可能性が低いシナリオは、愚かな人間の間違いです。
Phantomjs WebDriverを使用していて、このエラーが発生した場合は、実際にphantomjs.exeへの正しいパスを提供しているかどうかを確認する必要があります。このエラーは、Chromedriverへのパスを指定し、PhantomJsドライバーをインスタンス化するとスローされます