selenium-webdriver - JSR233 采样器与 Java 一起使用 Selenium Webdriver (javax.script.ScriptException : In file: inline evaluation)

标签 selenium-webdriver jmeter

尝试使用 JSR233 采样器在 Jmeter 中运行 Selenium Webdriver 脚本。该脚本在 Eclipse IDE 中运行良好,但在 Jmeter 中遇到以下错误。

ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, 
message: javax.script.ScriptException: In file: inline evaluation of: 
``import java.util.HashMap; import org.openqa.selenium.WebDriver; import 
org.openq . . . '' Encountered "," at line 28, column 25.
in inline evaluation of: ``import java.util.HashMap; import 
org.openqa.selenium.WebDriver; import org.openq . . . '' at line number 28
javax.script.ScriptException: In file: inline evaluation of: ``import 
java.util.HashMap; import org.openqa.selenium.WebDriver; import org.openq . 
. . '' Encountered "," at line 28, column 25.
in inline evaluation of: ``import java.util.HashMap; import 
org.openqa.selenium.WebDriver; import org.openq . . . '' at line number 28
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(Unknown Source) ~[?:1.8.0_181] 

下面是试图执行的脚本:
    import java.util.HashMap;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.By;
    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.openqa.selenium;
    System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
    String downloadFilepath = "D:/MyDeskDownload";
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
   // chromePrefs.put("profile.default_content_settings.popups", 0);
   // chromePrefs.put("download.default_directory", downloadFilepath);
   // chromePrefs.put("safebrowsing.enabled", "true"); 
    ChromeOptions options1 = new ChromeOptions();
    options1.setExperimentalOption("prefs", chromePrefs);
    DesiredCapabilities cap = DesiredCapabilities.chrome();
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    cap.setCapability(ChromeOptions.CAPABILITY, options1);
    WebDriver driver = new ChromeDriver(cap);
    driver.setJavaScriptEnabled(true);
    driver.get("http://google.com/");

我已经通过以下引用获得了上面的脚本:
  • Running Selenium scripts with JMeter
  • How to use WDS variable in BSF or JSR233 (JMeter)

  • 我们可以使用 JavaScript 实现使用 Selenium Webdriver 配置采样器启动浏览器和执行操作,但是由于我们无法使用 WDS 设置功能,我们尝试在 JSR233 中实现相同的功能。

    最佳答案

    从堆栈跟踪来看,您正在使用带有 Beanshell 或 Java(将是 beanshell)的 JSR223。

    因为它是 Beanshell,它不理解泛型(菱形运算符)所以这一行:

    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();



    因此,您只需将语言切换到 Groovy 即可解决问题:

    JSR223 Sampler

    关于selenium-webdriver - JSR233 采样器与 Java 一起使用 Selenium Webdriver (javax.script.ScriptException : In file: inline evaluation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54408036/

    相关文章:

    java - 用于许多测试的 geckodriver - Java

    python - 选择同一节点的元素

    jmeter - 如何使用 Jmeter 捕获 API 内调用其他 API 的响应时间

    mysql - 如何在 JMeter 中拆分和执行每个拆分值的 JDBC 插入 sql 查询

    postgresql - Jmeter 只记录第一次失败的断言到 .jtl 文件

    jmeter - 如何从eclipse运行jmeter脚本

    java - 如何使用 Selenium webdriver 在组合框中输入信息并进行查找?

    java - IE 访问 http ://localhost:36559/with message "This is the initial start page for the WebDriver server"

    java - 使用 Selenium Webdriver 滚动时获取 AJAX 内容加载

    java - 纯粹用 Java 为 Java Sampler 创建新的 JMeter 测试