簡體   English   中英

Jmeter Chromedriver錯誤:未知錯誤:從遠程主計算機執行時,DevToolsActivePort文件不存在

[英]Jmeter Chromedriver error: unknown error: DevToolsActivePort file doesn't exist when executed from remote master machine

我正在嘗試從安裝了WebDriver插件和chrome-driver的JMeter執行WebDriver采樣器腳本。 JMeter配置為在分布式模式下工作。 我目前有2個節點,一個主節點和一個從節點。 我的腳本駐留在主機上,我正嘗試使用以下命令從主機執行該腳本。

$JMETER_HOME/bin/jmeter -n -t recorder1.jmx -r

我收到此錯誤:

2019-03-10 16:18:03,416 INFO o.a.j.s.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2019-03-10 16:18:03,417 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run with stripAlsoOnError: true
2019-03-10 16:18:03,417 INFO o.a.j.s.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2019-03-10 16:18:03,418 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run with stripAlsoOnError: true
2019-03-10 16:18:03,429 INFO o.a.j.e.RemoteJMeterEngineImpl: Creating JMeter engine on host xx.xxx.xxx.xx base '..'
2019-03-10 16:18:03,430 INFO o.a.j.e.RemoteJMeterEngineImpl: Remote client host: 10.xxx.xxx.xxx
2019-03-10 16:18:03,430 INFO o.a.j.s.FileServer: Set new base='..'
2019-03-10 16:18:03,431 INFO o.a.j.e.RemoteJMeterEngineImpl: Cleaning previously set properties: {}
2019-03-10 16:18:03,431 INFO o.a.j.e.StandardJMeterEngine: Applying properties {}
2019-03-10 16:18:03,431 INFO o.a.j.e.RemoteJMeterEngineImpl: Running test
2019-03-10 16:18:03,437 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2019-03-10 16:18:03,438 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2019-03-10 16:18:03,504 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2019-03-10 16:18:03,504 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2019-03-10 16:18:03,504 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2019-03-10 16:18:03,504 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2019-03-10 16:18:03,507 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2019-03-10 16:18:03,507 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2019-03-10 16:18:03,508 INFO o.a.j.t.JMeterThread: Thread started: xx.xxx.xxx.xx-Thread Group 1-1
2019-03-10 16:18:03,649 ERROR o.a.j.t.JMeterThread: Error calling threadStarted
org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.15.0-1033-aws x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 111 milliseconds
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'jmeter-slave', ip: '10.xxx.xxx.xxx', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-1033-aws', java.version: '10.0.2'
Driver info: driver.version: ChromeDriver
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:488) ~[?:?]
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122) ~[selenium-remote-driver-3.14.0.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) ~[?:?]
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[?:?]
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543) ~[?:?]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181) ~[selenium-chrome-driver-3.14.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:74) ~[jmeter-plugins-webdriver-3.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:21) ~[jmeter-plugins-webdriver-3.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:233) ~[jmeter-plugins-webdriver-3.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:220) ~[jmeter-plugins-webdriver-3.0.jar:?]
    at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:762) [ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:994) [jorphan.jar:5.1 r1853635]
    at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:995) [jorphan.jar:5.1 r1853635]
    at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:977) [jorphan.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:730) [ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:718) [ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249) [ApacheJMeter_core.jar:5.1 r1853635]
    at java.lang.Thread.run(Thread.java:844) [?:?]
2019-03-10 16:18:03,952 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'jp@gc - LoadWidgetAllInOne'.
java.lang.IllegalArgumentException: Browser has not been configured.  Please ensure at least 1 WebDriverConfig is created for a ThreadGroup.
    at com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler.sample(WebDriverSampler.java:62) ~[jmeter-plugins-webdriver-3.0.jar:?]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) ~[ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) ~[ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1 r1853635]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1 r1853635]
    at java.lang.Thread.run(Thread.java:844) [?:?]
2019-03-10 16:18:03,957 INFO o.a.j.t.JMeterThread: Thread is done: xx.xxx.xxx.xx-Thread Group 1-1
2019-03-10 16:18:03,957 INFO o.a.j.t.JMeterThread: Thread finished: xx.xxx.xxx.xx-Thread Group 1-1
2019-03-10 16:18:03,969 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2019-03-10 16:18:03,969 INFO o.a.j.s.DataStrippingSampleSender: Test Ended on xx.xxx.xxx.xx
2019-03-10 16:18:03,969 INFO o.a.j.s.BatchSampleSender: Test Ended on xx.xxx.xxx.xx
2019-03-10 16:18:03,970 INFO o.a.j.s.DataStrippingSampleSender: Test Ended on xx.xxx.xxx.xx
2019-03-10 16:18:03,970 INFO o.a.j.s.BatchSampleSender: Test Ended on xx.xxx.xxx.xx
2019-03-10 16:18:03,971 INFO o.a.j.e.StandardJMeterEngine: Test has ended on host xx.xxx.xxx.xx

JMeter-Server在Slave實例上的ubuntu用戶下運行。 我也使用ubuntu用戶從Master機器執行測試。 我看到,如果用超級用戶執行chromedriver,可能會引起和我一樣的問題,但事實並非如此。

最奇怪的是,如果我在無頭模式下執行相同的腳本,則效果很好。 另外,如果我從GUI或從屬計算機上的命令行執行相同的腳本,它也可以正常工作而不會出錯。

安裝:

  • 具有Ubuntu 18.04的EC2實例
  • Apache的JMeter的-5.1
  • ChromeDriver 2.45.615355
  • JMeter的-插件-的webdriver-3.0.jar

有任何想法嗎?

我還在以下位置看到了可能的解決方案: org.openqa.selenium.WebDriverException:未知錯誤:嘗試啟動Chrome瀏覽器時DevToolsActivePort文件不存在

建議在此處添加以下代碼:

 System.setProperty("webdriver.chrome.driver","pathto\\\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("useAutomationExtension", false); WebDriver driver = new ChromeDriver(options); driver.get(url); 

但是在JMeter的Chrome驅動程序配置步驟中初始化之前,如何更改chromedriver選項?

  1. 根據我在ChromeDriver下載頁面上看到的內容

     Supports Chrome v70-72 

    因此,請確保Ubuntu中安裝的Chrome版本在支持的范圍內

  2. 鑒於操作系統是Ubuntu 服務器 ,而Chrome要求DISPLAY可以在real或virtual上運行,因此該操作系統不應具有GUI。 在這兩種情況下,都應該定義DISPLAY變量並指向實際或虛擬顯示。

  3. 因此,首先在運行JMeter slave時完全按照您的身份登錄計算機然后以ubuntu用戶身份啟動/usr/bin/google-chrome 如果啟動沒有問題-您應該很好,如果沒有-您需要先修復瀏覽器啟動,然后才能嘗試從JMeter使用它。 您可以通過驗證退出狀態來再次檢查瀏覽器執行的結果-運行以下命令:

     echo $? 

    如果看到0 ,則表示正常;如果沒有,則表示存在問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM