WebDriver Sampler script startup issue

153 views
Skip to first unread message

Gene Li

unread,
Oct 25, 2023, 9:09:59 AM10/25/23
to jmeter-plugins
I got this error when starting my scripts:

Response message:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script3.groovy: 69: Unexpected input: 'WDS.browser.findElement(By.xpath("//button[@id='btnSubmit']")).click()\n\nassert' @ line 69, column 1.
   assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td/a")).getText().equals(confirmNo)
   ^

1 error

Actually whenever number of lines of script is no less than 69, it'll throw this error with different reasons.

Dmitri T

unread,
Oct 25, 2023, 9:20:18 AM10/25/23
to jmeter-plugins
We cannot help you without seeing your code, most probably there is a syntax error somewhere.

Also I don't think that using assert is a good idea, I would rather go for something like:


if (!WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td/a")).getText().equals(confirmNo)) {
WDS.sampleResult.setSuccessful(false)
WDS.sampleResult.setResponseCode('500')
WDS.sampleResult.setResponseMessage('Unexpected link text')
}

This way you will be able to provide reasonable failure messages.

more information on this and other useful JMeter API shortcuts:  Top 8 JMeter Java Classes You Should Be Using with Groovy

Gene Li

unread,
Oct 25, 2023, 11:34:23 AM10/25/23
to jmeter-plugins
Thanks Dmitri! 

I commented my assert statements but still the script has issues, following is my codes:

import org.openqa.selenium.By
import org.openqa.selenium.support.ui.Select
import java.text.SimpleDateFormat

WDS.sampleResult.sampleStart()

WDS.browser.get("https://stage.ontarioimmigration.gov.on.ca/oinp_index/resources/app/guest/index.html")

WDS.browser.findElement(By.xpath("(//button[@type='button'])[2]")).click()

WDS.browser.sleep(5000)

WDS.browser.findElement(By.xpath("//input")).sendKeys(WDS.vars.get("email"))

WDS.browser.findElement(By.xpath("//div[2]/div/span/input")).sendKeys(WDS.vars.get("password"))

WDS.browser.findElement(By.xpath("//input[@id='okta-signin-submit']")).click()

WDS.browser.sleep(10000)

WDS.browser.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='New Applicant'])[1]/following::a[1]")).click()

WDS.browser.sleep(5000)

WDS.browser.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='HUMAN CAPITAL'])[1]/following::a[1]")).click()

WDS.browser.findElement(By.xpath("//button[@type='button']")).click()

WDS.browser.sleep(5000)

WDS.browser.findElement(By.xpath("//input[@id='lastname']")).sendKeys("Lee")

WDS.browser.findElement(By.xpath("//input[@id='firstname']")).sendKeys("Lanne")

WDS.browser.findElement(By.xpath("//input[@id='dob']")).sendKeys("06122001")


WDS.browser.findElement(By.xpath("//button[@id='btnSubmit']")).click()

WDS.browser.sleep(5000)

WDS.browser.findElement(By.xpath("//input[@id='userProfileForm.applicant.subStream2']")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

new Select(WDS.browser.findElement(By.xpath("//select[@id='phoneType']"))).selectByVisibleText("Cellular (cell/mobile)")

new Select(WDS.browser.findElement(By.xpath("//select[@id='pCountryCode']"))).selectByVisibleText("Canada - 1")

WDS.browser.findElement(By.xpath("//input[@id='homeLocal']")).sendKeys("6473825733");

new Select(WDS.browser.findElement(By.xpath("//select[@id='country']"))).selectByVisibleText("Canada")

WDS.browser.findElement(By.xpath("//input[@id='notifydate']")).sendKeys(new SimpleDateFormat("dd/MM/yyyy").format(new Date())

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='pd-IS_DISCLAIMER_SIGN']/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='pd-IS_DISCLAIMER_SIGN']/div[3]/div/input")).sendKeys("Lanne Lee")


WDS.browser.findElement(By.xpath("//button[@id='btnSubmit']")).click()

String confirmNo = WDS.browser.findElement(By.xpath("//div[@id='resultDiv']/p[2]")).getText().replace("Your confirmation number is: ", "").replace(".", "")

WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[3]/div/a")).click()


WDS.browser.findElement(By.xpath("//button[@id='btnSubmit']")).click()

//assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td/a")).getText().equals(confirmNo)
//
//assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td[2]")).getText().equals("French-Speaking - CEC")
//
//assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td[4]")).getText().equals("Waiting for Submission")
//
//assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td[5]")).getText().equals("0")
//
//assert WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td[6]/button")).getText().equals("Withdraw")

WDS.browser.findElement(By.xpath("//div[@id='div_content']/div/div[2]/div/div/div[2]/table/tbody/tr/td/a")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_AST_HAVE_HELP_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//input[@id='i_APP_EXPRESS_ENTRY_PROF_NUM']")).sendKeys("E123456789")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_JOB_SEEKER_VALIDATION_CODE']")).sendKeys("1111")

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

new Select(WDS.browser.findElement(By.xpath("//select[@id='i_APP_BIRTH_COUNTRY']"))).selectByVisibleText("China")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_BIRTH_PLACE']")).sendKeys("Nanjing")

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_GENDER']/fieldset/div[2]/div/input")).click()

new Select(WDS.browser.findElement(By.xpath("//select[@id='i_APP_CITIZENSHIP']"))).selectByVisibleText("China")

new Select(WDS.browser.findElement(By.xpath("//select[@id='i_APP_MARITAL_STATUS']"))).selectByVisibleText("Never Married")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_PASSPORT_NO']")).sendKeys(WDS.vars.get('passportNo'))

WDS.browser.findElement(By.xpath("//input[@id='i_APP_PASSPORT_ISSUE_DATE']")).sendKeys("01092018")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_PASSPORT_EXPIRY_DATE']")).sendKeys("01092028")

new Select(WDS.browser.findElement(By.xpath("//select[@id='i_APP_COUNTRY']"))).selectByVisibleText("China")

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

new Select(WDS.browser.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Country'])[1]/following::select[1]"))).selectByVisibleText("Canada")

WDS.browser.findElement(By.xpath("//div[2]/div/input")).sendKeys("603-25 Oxley St")

WDS.browser.findElement(By.xpath("//div[3]/div/input")).sendKeys("Toronto")

new Select(WDS.browser.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Province/State'])[1]/following::select[1]"))).selectByVisibleText("Ontario")

WDS.browser.findElement(By.xpath("//div[4]/div/div/div[3]/div[2]/div[2]/input")).sendKeys("M5V 2J5")

WDS.browser.findElement(By.xpath("//div[4]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_PREFERED_CORR_LANG']/fieldset/div[2]/div/input")).click()

new Select(WDS.browser.findElement(By.xpath("//select[@id='i_APP_NATIVE_LANG']"))).selectByVisibleText("Mandarin")

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_IMM_STATUS_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_CURRENT_STATUS']/fieldset/div[2]/div[4]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_WORK_PERMIT']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//input[@id='i_APP_CLIENT_ID']")).sendKeys("11111111")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_IRCC_EXPIRY_DATE']")).sendKeys("01092025")

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_SUBMITTED_BEFORE_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_IN_OTH_PROV_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_SUBMIT_DUP_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//input[@value='BachelorDegree']")).click()

WDS.browser.findElement(By.xpath("//input[@id='startDate[0]']")).sendKeys("01092018")

WDS.browser.findElement(By.xpath("//input[@id='endDate[0]']")).sendKeys("01092022")

WDS.browser.findElement(By.xpath("//input[@id='educationHistory[0].institution']")).sendKeys("Queen's University")

new Select(WDS.browser.findElement(By.xpath("//select[@id='educationHistory[0].levelOfEdu']"))).selectByValue("BachelorDegree")

WDS.browser.findElement(By.xpath("//select[@id='educationHistory[0].fieldOfStudy']")).sendKeys("Business and related studies")

WDS.browser.findElement(By.xpath("//input[@id='fullTime']")).click()

new Select(WDS.browser.findElement(By.xpath("//select[@id='educationHistory[0].institutionCountry']"))).selectByVisibleText("Canada")

WDS.browser.findElement(By.xpath("//input[@id='educationHistory[0].institutionProvince']")).sendKeys("Kingston")

new Select(WDS.browser.findElement(By.xpath("//select[@id='educationHistory[0].completedFlag']"))).selectByVisibleText("Yes")

WDS.browser.findElement(By.xpath("//input[@id='validCanadianDegreeIndicatorYes[0]']")).click()

WDS.browser.findElement(By.xpath("//div[8]/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[9]/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_LANG_PROFICIENT']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//input[@id='tefIndicator']")).click()

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.reading']")).sendKeys("8")

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.listening']")).sendKeys("8")

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.writting']")).sendKeys("8")

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.speaking']")).sendKeys("8")

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.dateOfTest']")).sendKeys("01092022")

WDS.browser.findElement(By.xpath("//input[@id='languageLevel.langLvlApplicantTEF.dateOfTestresult']")).sendKeys("01102022")

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_WITH_JOB_OFFER_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_JOBOFF_FULLTIME_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//input[@id='i_APP_JOB_OFFER_TITLE']")).sendKeys("Financial and investment analysts")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_INTEND_NOC_CODE']")).sendKeys("11101")

WDS.browser.findElement(By.xpath("//input[@id='i_APP_INTEND_EMPLOYER']")).sendKeys("TD")

WDS.browser.findElement(By.xpath("//div/div[2]/div/input")).sendKeys("111 King St W")

WDS.browser.findElement(By.xpath("//div[3]/div/input")).sendKeys("Toronto")

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_ISSUED_LMIA_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_OCC_LICENSING_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_CERT_OF_QUAL']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_CUR_WORKIN_ON_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_WITH_WORK_PERMIT_YN']/fieldset/div[2]/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_OFFER_NAMED_WORKPERM']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_LMIA_ISSUED_WORKPERM_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_WORKPERM_LMIA_EXEMPT_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.sleep(2000)

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].currentExpIndicator']")).click()

WDS.browser.sleep(2000)

WDS.browser.findElement(By.xpath("//input[@id='startDate[0]']")).sendKeys("01092022")

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].hoursPerWeek']")).sendKeys("37.5")

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].jobTitle']")).sendKeys("Financial and investment analysts")

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].nocCode']")).sendKeys("11101")

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].nameOfEmployer']")).sendKeys("TD")

WDS.browser.findElement(By.xpath("//input[@id='personalAndWorkHistory[0].cityProvince']")).sendKeys("Toronto")

new Select(WDS.browser.findElement(By.xpath("//select[@id='personalAndWorkHistory[0].institutionCountry']"))).selectByVisibleText("Canada")

WDS.browser.findElement(By.xpath("//input[@id='workPermitYes']")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_HAS_OTHER_ACTIVITIES_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.sleep(2000)

WDS.browser.findElement(By.xpath("//textarea[@id='i_APP_STATEMENT_INTENT']")).sendKeys("Current employment in Ontario\nEducation in Ontario\nLease agreement for a residence in Ontario\nFamily tie")

WDS.browser.sleep(2000)

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_RELATIVE_IN_CANADA_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='pd-RESIDE_ON_SIGNATURE']/div/input")).click()

WDS.browser.findElement(By.xpath("//div[@id='pd-RESIDE_ON_SIGNATURE']/div[3]/div/input")).sendKeys('Lanne Lee')

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_HAVE_FAMILY_MEM_YN']/fieldset/div[2]/div[2]/input")).click()

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//input[@id='i_APP_EXPENSE_AMT']")).sendKeys('2000000')

WDS.browser.findElement(By.xpath("//input[@id='i_APP_ANNUAL_SALARY']")).sendKeys('5000000')

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//div[@id='fg_APP_HOW_LEARN_OINP']/fieldset/div[2]/div[8]/input")).click()

WDS.browser.findElement(By.xpath("//input[@id='i_APP_HOW_LEARN_OINP_OTHER']")).sendKeys("Family tie")

WDS.browser.findElement(By.xpath("//button[@id='btnNext']")).click()

WDS.browser.findElement(By.xpath("//a[@id='a_logout']")).click()

WDS.sampleResult.sampleEnd()


Dmitri T

unread,
Oct 25, 2023, 11:39:07 AM10/25/23
to jmeter-plugins
The problem is missing closing parentheses on this line:

WDS.browser.findElement(By.xpath("//input[@id='notifydate']")).sendKeys(new SimpleDateFormat("dd/MM/yyyy").format(new Date())

you need to add one more:

WDS.browser.findElement(By.xpath("//input[@id='notifydate']")).sendKeys(new SimpleDateFormat("dd/MM/yyyy").format(new Date())))

More information on Groovy scripting in JMeter: Apache Groovy: What Is Groovy Used For?

Also using Thread.sleep() is some form of a performance anti-pattern, consider migrating to Explicit Wait instead

Gene Li

unread,
Oct 25, 2023, 12:00:41 PM10/25/23
to jmeter-plugins
Thanks Dmitri, it's a big help!
Reply all
Reply to author
Forward
0 new messages