在 class 中找不到 JMETER Beanshell ( java.lang.String )

JMETER Beanshell ( java.lang.String ) not found in class

我正在开发一个 Jmeter beanshell 脚本来使用 Selenium。我决定使用 beanshell 采样器,这样我就可以使用 WDS 界面中无法访问的 java 和 selenium 命令。

除了一些字符串输入外,我的代码工作正常。这是一个示例(拆成准系统):

import org.openqa.selenium.chrome.ChromeOptions;

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

我收到这个错误

2017/03/31 13:43:21 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``import org.openqa.selenium.chrome.ChromeOptions; debug();  ChromeOptions options . . . '' : Error in method invocation: Method addArguments( java.lang.String ) not found in class'org.openqa.selenium.chrome.ChromeOptions'  2017/03/31 13:43:21 WARN  - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.openqa.selenium.chrome.ChromeOptions; debug();  ChromeOptions options . . . '' : Error in method invocation: Method addArguments( java.lang.String ) not found in class'org.openqa.selenium.chrome.ChromeOptions'  201

我在其他一些命令(如 sendkeys)中看到了类似的情况。

为什么这个命令没有使用我的字符串?我可以 运行 完整的脚本,浏览器打开文件,所以我知道 selenium 是用 jmeter 设置的。这只是某些使用字符串的命令。

谢谢 J

根据您的 Selenium 客户端库版本,您可能没有此方法将单个字符串作为参数。使用以下行创建一个新的 Beanshell Sampler

log.info(javap(org.openqa.selenium.chrome.ChromeOptions));

然后查看 JMeter 控制台:您将看到 javap command printing out all the available methods for the ChromeOptions class,例如对于我的安装(我有 WebDriver Sampler 插件)它输出以下内容:

Class class org.openqa.selenium.chrome.ChromeOptions extends class java.lang.Object

public boolean org.openqa.selenium.chrome.ChromeOptions.equals(java.lang.Object)

public int org.openqa.selenium.chrome.ChromeOptions.hashCode()

public void org.openqa.selenium.chrome.ChromeOptions.addArguments(java.lang.String[])

public void org.openqa.selenium.chrome.ChromeOptions.addArguments(java.util.List)

如果您使用与我相同的 Selenium 库版本 (2.52.0),则应更改此行:

options.addArguments("start-maximized");

给这个:

options.addArguments(new String[] {"start-maximized"});

您的脚本应该会按预期开始工作。

有关 JMeter 测试中 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。