在 Apache Jmeter 中执行基于 Java 的 Selenium WebDriver 测试
Execute Java based Selenium WebDriver Test in Apache Jmeter
我想在 Apache Jmeter 中执行(我想稍后扩展)我的第一个基于 Java 的 Selenium 测试,但我在日志部分收到一条错误消息:
这是我的简单代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
System.setProperty("webdriver.gecko.driver","c:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe")
WebDriver driver = new FirefoxDriver();
String url="https://www.google.com/")
driver.get(baseUrl);
driver.close();
这是错误:
2020-06-30 14:52:20,702 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2020-06-30 14:52:20,702 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2020-06-30 14:52:20,703 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2020-06-30 14:52:20,710 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2020-06-30 14:52:20,710 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2020-06-30 14:52:20,711 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2020-06-30 14:52:20,719 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: In file: inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' Encountered "WebDriver" at line 5, column 1.
in inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' at line number 5
javax.script.ScriptException: In file: inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' Encountered "WebDriver" at line 5, column 1.
in inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' at line number 5
at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:82) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:46) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) ~[?:1.8.0_202]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:224) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:72) [ApacheJMeter_java.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
2020-06-30 14:52:20,719 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2020-06-30 14:52:20,719 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2020-06-30 14:52:20,720 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-06-30 14:52:20,720 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
我不知道为什么会这样,因为每个罐子都被复制到:
Apache Jmeter lib 文件夹和 lib/ext/ 文件夹。
如果可能的话,我想离开WDS.Sampler。这就是我开始使用SR223Sampler的原因。
更新:
这是我的最终解决方案。效果如我所料。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
System.setProperty("webdriver.gecko.driver","c:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions().setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(options);
String expectedTitle = "Google";
String actualTitle = "";
String baseUrl = "https://google.com";
driver.get(baseUrl);
actualTitle = driver.getTitle();
if (actualTitle.contentEquals(expectedTitle)){
System.out.println("Test Passed!");
} else {
System.out.println("Test Failed");
}
Thread.sleep(5000);
driver.close();
该问题是由于 格式错误 url 由于行中的 语法 问题造成的:
String url="https://www.google.com/")
您需要传递正确的 url 并将行替换为:
String baseUrl = "https://www.google.com/";
然后将url字符串传给get()
方法如下:
driver.get(baseUrl);
此外,在 windows 系统上,驱动器是 C:
(大写)而不是 c:
(小写)。实际上,该行将是:
System.setProperty("webdriver.gecko.driver","C:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe")
我想在 Apache Jmeter 中执行(我想稍后扩展)我的第一个基于 Java 的 Selenium 测试,但我在日志部分收到一条错误消息:
这是我的简单代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
System.setProperty("webdriver.gecko.driver","c:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe")
WebDriver driver = new FirefoxDriver();
String url="https://www.google.com/")
driver.get(baseUrl);
driver.close();
这是错误:
2020-06-30 14:52:20,702 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2020-06-30 14:52:20,702 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2020-06-30 14:52:20,703 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2020-06-30 14:52:20,710 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2020-06-30 14:52:20,710 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2020-06-30 14:52:20,710 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2020-06-30 14:52:20,711 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2020-06-30 14:52:20,719 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: In file: inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' Encountered "WebDriver" at line 5, column 1.
in inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' at line number 5
javax.script.ScriptException: In file: inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' Encountered "WebDriver" at line 5, column 1.
in inline evaluation of: ``import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.Firefox . . . '' at line number 5
at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:82) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:46) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) ~[?:1.8.0_202]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:224) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:72) [ApacheJMeter_java.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
2020-06-30 14:52:20,719 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2020-06-30 14:52:20,719 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2020-06-30 14:52:20,720 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-06-30 14:52:20,720 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
我不知道为什么会这样,因为每个罐子都被复制到: Apache Jmeter lib 文件夹和 lib/ext/ 文件夹。
如果可能的话,我想离开WDS.Sampler。这就是我开始使用SR223Sampler的原因。
更新:
这是我的最终解决方案。效果如我所料。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
System.setProperty("webdriver.gecko.driver","c:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions().setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(options);
String expectedTitle = "Google";
String actualTitle = "";
String baseUrl = "https://google.com";
driver.get(baseUrl);
actualTitle = driver.getTitle();
if (actualTitle.contentEquals(expectedTitle)){
System.out.println("Test Passed!");
} else {
System.out.println("Test Failed");
}
Thread.sleep(5000);
driver.close();
该问题是由于 格式错误 url 由于行中的 语法 问题造成的:
String url="https://www.google.com/")
您需要传递正确的 url 并将行替换为:
String baseUrl = "https://www.google.com/";
然后将url字符串传给get()
方法如下:
driver.get(baseUrl);
此外,在 windows 系统上,驱动器是 C:
(大写)而不是 c:
(小写)。实际上,该行将是:
System.setProperty("webdriver.gecko.driver","C:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe")