1
votes

In WeDriver sampler i want to use JavaImporter to call my own class which will execute test for login page. Insert username and password and enter.

like to is used in that way: var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui) var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait)

I have created class file and create jar file with eclipse help. Class will only update values on web page ( username and password). Created a jar file from eclipse was Import into eclipse project to check if jar file is correct. I can browse classes and import class into new java file.

JAR file was copied into JmeterPATH/lib/ext, open JMeter and update tests webdriver sampler with: var login_page = JavaImporter(WebTest.BO.Login)

Jmeter returns: Response message: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "WebTest" is not defined. (#3) in at line number 3

Does anyone know what should be add into class Login , that JMeter will work correctly and will recognise package WebTest.BO.Login ( as it is recognised in eclipse)

In JMeter i also add in Testplan JAR File.

Thank you very much for support.

This is a code of class package WebTest.BO.Login;

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;


public class LogIn_Page {
private WebDriver driver;   
public void Login(WebDriver driver, String username, String password)   throws Exception {

   this.driver = driver;
   WebDriverWait webwait = new WebDriverWait(driver, 30);

   WebElement UserName = driver.findElement(By.xpath("//input[@id='UserName']"));
   UserName.sendKeys(username);

   WebElement Password = driver.findElement(By.xpath("//input[@id='Password']"));
   Password.sendKeys(password);

   WebElement loginBtn =  driver.findElement(By.xpath("//input[@id='loginBtn']"));
   loginBtn.click();

}

Resolved code in Jmeter:

importPackage(Packages.WebTest.BO.Login)

var login_page = new LogIn_Page()

var support_ec = JavaImporter(org.openqa.selenium.support.ui)
var timeunit =   JavaImporter(java.util.concurrent);
var wait = new support_ui.WebDriverWait(WDS.browser, 30)


WDS.sampleResult.sampleStart()

WDS.browser.get("${server}")

login_page.Login(WDS.browser, "${username}", "${username}") Regards

1

1 Answers

0
votes

As per Script Engine docs you need either:

var login = new Packages.WebTest.BO.Login

or

importPackage(Packages.WebTest.BO.Login)

More on the topic in how to use Selenium with JMeter document.