在 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 文章。
我正在开发一个 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 文章。