如何在Jmeter webdriver采样器中调用jar中的方法



我在一个从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,但结果没有差别。有人知道如何解决这个问题吗?

感谢你的帮助,

马尼拉。

  1. .jar的正确位置是lib文件夹,lib/ext应该用于真正的插件
  2. 有关从JSR223兼容的脚本语言访问Java类的不同选项,请参阅《从脚本使用Java》指南
  3. 请参阅WebDriver Sampler:Your Top 10 Questions Answered指南,了解WebDriver采样器插件的细节以及使用其中的Java类
  4. 在您的情况下,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();

早些时候我尝试过这个,但由于我的包出现了一些问题,所以没有成功。所以我创建了一个新的包,解决了我的问题!!!

最新更新