【问题标题】:Execute Java based Selenium WebDriver Test in Apache Jmeter在 Apache Jmeter 中执行基于 Java 的 Selenium WebDriver 测试
【发布时间】:2020-10-20 19:17:58
【问题描述】:

我想在 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*)

我不知道为什么会发生,因为每个 jar 都被复制到: 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();

【问题讨论】:

    标签: java selenium selenium-webdriver jmeter selenium-firefoxdriver


    【解决方案1】:

    问题是由于 语法 问题导致的 格式错误

    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")
    

    【讨论】:

    • 哦,谢谢。这对我来说是一种耻辱:'(。感谢您的帮助!还有一个问题,即 System.setProperty 行中的 ; 错过了。
    • @Imi 当我们没有想法时提出问题并不丢人。好好学习吧。
    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多