在 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();

该问题是由于 格式错误 由于行中的 语法 问题造成的:

String url="https://www.google.com/")

您需要传递正确的 url 并将行替换为:

String baseUrl = "https://www.google.com/";

然后将url字符串传给get()方法如下:

driver.get(baseUrl);  

此外,在 系统上,驱动器是 C:(大写)而不是 c:(小写)。实际上,该行将是:

System.setProperty("webdriver.gecko.driver","C:\DEVTOOLS\PERFORMANCE_TEST\FIREFOX_GECKO_DRIVER\geckodriver.exe")