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

时间:2014-10-24 07:43:17

标签: java selenium-webdriver jmeter

我在jar文件中有很少的方法 - 从eclipse创建 - 我想从我的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-webdriver采样器尝试调用此方法如下:



 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:TypeError:在对象[object JavaImporter]中找不到函数openWebApp。 (#4)在第4行

不确定我在这里想念的是什么。我尝试将jar文件复制到JMeter_HOME / lib / ext,但结果没有区别。有人知道如何解决这个问题吗?

感谢您的帮助,

manib。

3 个答案:

答案 0 :(得分:0)

  1. .jar的正确位置是lib文件夹,lib / ext应该用于真正的插件
  2. 有关从符合JSR223的脚本语言访问Java类的不同选项,请参阅Using Java From Scripts指南
  3. 有关WebDriver Sampler插件的详细信息并使用其中的Java类,请参阅The WebDriver Sampler: Your Top 10 Questions Answered指南。
  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();
    
  5. 它应该可以解决您的问题。

答案 1 :(得分:0)

取决于如何在JMeter中运行代码? BeanShell的; JSR223;等

您的jar必须放在{JMETER_HOME} / lib

在beanshell中,您可以非常轻松地导入静态..

import com.automation.methods.testClass

然后,您可以从静态类中调用该方法..

testClass.openWebApp(...);

答案 2 :(得分:0)

谢谢大家的回复。我根据您的意见进行了工作并得到了解决方案:



importPackage(com.automation.methods);
var classObj=new testClass();
WDS.sampleResult.sampleStart();
classObj.openWebApp(WDS.browser,'http://google.com.au');
WDS.sampleResult.sampleEnd();




早些时候我试过这个,但由于我的包有些问题而无法正常工作。所以我创建了一个全新的软件包,解决了我的问题!