我在一个从eclipse创建的jar文件中有几个方法,我想从我的JMeter Webdriver采样器中调用这些方法。这就是我所做的。
我的java类:
package com.automation.methods;
import org.openqa.selenium.*;
public class testClass{
public static void openWebApp(WebDriver driver,String url) {
driver.get(url);
}
}
我已经从eclipse中创建了一个jar,并将其复制到JMeter_HOME/lib中。
在JMeter网络驱动程序采样器中,我尝试调用以下方法:
var testObj= JavaImporter(com.automation.methods.testClass);
WDS.sampleResult.sampleStart();
testObj.openWebApp(WDS.browser,'http://google.com.au');
WDS.sampleResult.sampleEnd();
但这引发了一个错误:sun.org.mozilla.javascript.internal.EcmaError:类型错误:在对象[object JavaImporter]中找不到函数openWebApp。(#4)在第4行
不知道我在这里错过了什么。我尝试将jar文件复制到JMeter_HOME/lib/ext,但结果没有差别。有人知道如何解决这个问题吗?
感谢你的帮助,
马尼拉。
- .jar的正确位置是lib文件夹,lib/ext应该用于真正的插件
- 有关从JSR223兼容的脚本语言访问Java类的不同选项,请参阅《从脚本使用Java》指南
- 请参阅WebDriver Sampler:Your Top 10 Questions Answered指南,了解WebDriver采样器插件的细节以及使用其中的Java类
-
在您的情况下,
openWebApp
方法是静态的。静态字段和方法可以从类对象本身访问。因此,如果您想从WDS Sampler中调用该方法,则需要采取一些不同的做法。更新您的代码如下:var testObj= new com.automation.methods.testClass; WDS.sampleResult.sampleStart(); testObj.openWebApp(WDS.browser,'http://google.com.au'); WDS.sampleResult.sampleEnd();
它应该能解决你的问题。
取决于如何在JMeter中运行代码?比恩谢尔;JSR223;等
您的jar必须放置在{JMETER_HOME}/lib 中
在豆壳中,你可以很容易地导入静态。。
import com.automation.methods.testClass
然后可以从静态类中调用该方法。。
testClass.openWebApp(...);
感谢大家的回复。我根据您的输入进行了工作,并通过以下方式获得了解决方案:
importPackage(com.automation.methods);
var classObj=new testClass();
WDS.sampleResult.sampleStart();
classObj.openWebApp(WDS.browser,'http://google.com.au');
WDS.sampleResult.sampleEnd();
早些时候我尝试过这个,但由于我的包出现了一些问题,所以没有成功。所以我创建了一个新的包,解决了我的问题!!!