[Solved] Variable not expanding correctly I think

Hello. I am new to Katalon Studio. I have a very small amount of experience using Katalon chrome extension.

I am trying to automate clicking on a + button on a website. The buttons follow this pattern:
xpath=(.//*[normalize-space(text()) and normalize-space(.)='✓'])[${Slot}]/following::span[1]
where ${Slot} is index * 2 + 1. where index is for loop.

Test Case:

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys

WebUI.openBrowser('https://dg.coupons.com/signin/?done=%2Fcoupons%2F')

WebUI.setText(findTestObject('Page_Sign In/input_EMAIL OR PHONE_username'), Username)

WebUI.setText(findTestObject('Page_Sign In/input_Password_password'), Password)

WebUI.click(findTestObject('Object Repository/Page_Sign In/input_Sign in_btn-sign-in'))

WebUI.click(findTestObject('Page_Coupons Gallery/span_Add', [('Slot') : 1]))

WebUI.delay(1)

WebUI.click(findTestObject('Page_Coupons Gallery/label_Ok I understand Close window'))

for (def index : (1..99999)) {
    WebUI.click(findTestObject('Page_Coupons Gallery/span_Add', [('Slot') : (index * 2) + 1]))

    WebUI.scrollToPosition(0, 99999)
	
	WebUI.delay(0.5)
}


Object:

Original Objects:



Website:

https://dg.coupons.com/coupons/

Project Files:

~snip~

Hi @BetaLeaf

What is the error you’re encountering ? I can’t access the website you gave. Please post the console log here.

It works fine on my end. Can you try again please?

Console Log:

2019-11-13 03:39:41.679 INFO  c.k.katalon.core.main.TestCaseExecutor   - --------------------
2019-11-13 03:39:41.683 INFO  c.k.katalon.core.main.TestCaseExecutor   - START Test Cases/Desktop
2019-11-13 03:39:41.948 INFO  c.k.katalon.core.main.TestCaseExecutor   - (Default) Username = ******************
2019-11-13 03:39:41.958 INFO  c.k.katalon.core.main.TestCaseExecutor   - (Default) Password = *************
2019-11-13 03:39:41.969 INFO  c.k.katalon.core.main.TestCaseExecutor   - (Default) Processed = 0
2019-11-13 03:39:42.332 DEBUG testcase.Desktop                         - 1: openBrowser("https://dg.coupons.com/signin/?done=%2Fcoupons%2F")
2019-11-13 03:39:42.636 INFO  c.k.k.core.webui.driver.DriverFactory    - Starting 'Chrome' driver
Nov 13, 2019 3:39:42 AM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
2019-11-13 03:39:42.690 INFO  c.k.k.core.webui.driver.DriverFactory    - Action delay is set to 0 seconds
Starting ChromeDriver 77.0.3865.40 (f484704e052e0b556f8030b65b953dce96503217-refs/branch-heads/3865@{#442}) on port 33318
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1573634384.755][WARNING]: This version of ChromeDriver has not been tested with Chrome version 78.
[1573634386.760][WARNING]: Timed out connecting to Chrome, retrying...
Nov 13, 2019 3:39:48 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
2019-11-13 03:39:48.851 INFO  c.k.k.core.webui.driver.DriverFactory    - sessionId = 198b5286214d060a2b1d8654193bb082
2019-11-13 03:39:48.868 INFO  c.k.k.core.webui.driver.DriverFactory    - browser = Chrome 78.0.3904.97
2019-11-13 03:39:48.868 INFO  c.k.k.core.webui.driver.DriverFactory    - platform = Windows 10
2019-11-13 03:39:48.869 INFO  c.k.k.core.webui.driver.DriverFactory    - seleniumVersion = 3.141.59
2019-11-13 03:39:48.870 INFO  c.k.k.core.webui.driver.DriverFactory    - proxyInformation = ProxyInformation{proxyOption=NO_PROXY, proxyServerType=HTTP, password=, proxyServerAddress=, proxyServerPort=0}
2019-11-13 03:39:53.880 DEBUG testcase.Desktop                         - 2: setText(findTestObject("Page_Sign In/input_EMAIL OR PHONE_username"), Username)
2019-11-13 03:39:55.057 DEBUG testcase.Desktop                         - 3: setText(findTestObject("Page_Sign In/input_Password_password"), Password)
2019-11-13 03:39:55.775 DEBUG testcase.Desktop                         - 4: click(findTestObject("Object Repository/Page_Sign In/input_Sign in_btn-sign-in"))
2019-11-13 03:39:56.363 DEBUG testcase.Desktop                         - 5: click(findTestObject("Page_Coupons Gallery/span_Add", ["Slot":1]))
2019-11-13 03:40:37.046 INFO  c.k.k.c.webui.common.WebUiCommonHelper   - Unable to find the element located by 'By.xpath: '. Please recheck the objects properties to make sure the desired element is located. 
2019-11-13 03:40:37.490 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to click on object 'Object Repository/Page_Coupons Gallery/span_Add' (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to click on object 'Object Repository/Page_Coupons Gallery/span_Add'
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:64)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:26)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:99)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:43)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.click(WebUiBuiltInKeywords.groovy:616)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$click$1.call(Unknown Source)
	at Desktop.run(Desktop:27)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:337)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:328)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:307)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:299)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:233)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1573634377516.run(TempTestCase1573634377516.groovy:23)
Caused by: com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/Page_Coupons Gallery/span_Add' located by 'By.xpath: ' not found
	at com.kms.katalon.core.webui.common.WebUiCommonHelper.findWebElement(WebUiCommonHelper.java:1113)
	at com.kms.katalon.core.webui.keyword.internal.WebUIAbstractKeyword.findWebElement(WebUIAbstractKeyword.groovy:27)
	at com.kms.katalon.core.webui.keyword.internal.WebUIAbstractKeyword.findWebElement(WebUIAbstractKeyword.groovy:26)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:68)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword$_click_closure1.call(ClickKeyword.groovy)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:99)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:43)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.click(WebUiBuiltInKeywords.groovy:616)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$click$1.call(Unknown Source)
	at Script1573608404684.run(Script1573608404684.groovy:27)
	... 11 more
)
2019-11-13 03:40:37.494 ERROR c.k.katalon.core.main.TestCaseExecutor   - ❌ Test Cases/Desktop FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Unable to click on object 'Object Repository/Page_Coupons Gallery/span_Add'
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:64)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:26)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:99)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:43)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.click(WebUiBuiltInKeywords.groovy:616)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$click$1.call(Unknown Source)
	at Desktop.run(Desktop:27)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:337)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:328)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:307)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:299)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:233)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1573634377516.run(TempTestCase1573634377516.groovy:23)
Caused by: com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/Page_Coupons Gallery/span_Add' located by 'By.xpath: ' not found
	at com.kms.katalon.core.webui.common.WebUiCommonHelper.findWebElement(WebUiCommonHelper.java:1113)
	at com.kms.katalon.core.webui.keyword.internal.WebUIAbstractKeyword.findWebElement(WebUIAbstractKeyword.groovy:27)
	at com.kms.katalon.core.webui.keyword.internal.WebUIAbstractKeyword.findWebElement(WebUIAbstractKeyword.groovy:26)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:68)
	at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword$_click_closure1.call(ClickKeyword.groovy)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
	... 17 more

2019-11-13 03:40:37.497 INFO  c.k.katalon.core.main.TestCaseExecutor   - END Test Cases/Desktop

If the link still doesn’t work for you, try the way back machine. It may be a region thing. Either way, it should work on the way back machine. https://web.archive.org/web/20191113084811/https://dg.coupons.com/coupons/

You won’t be able to click the add button, but the site should be preserved enough to debug the issue

Hi @BetaLeaf

On way back machine, I executed this test (I removed irrelevant statements):

WebUI.openBrowser('https://web.archive.org/web/20191113084811/https://dg.coupons.com/coupons/')

WebUI.click(findTestObject('Page_Coupons Gallery/span_Add', [('Slot') : 1]))

for (def index : (1..99999)) {
    WebUI.click(findTestObject('Page_Coupons Gallery/span_Add', [('Slot') : (index * 2) + 1]))

    WebUI.scrollToPosition(0, 99999)
}

And Katalon is clicking all the objects.

I am using 7.0.6, what version are you using ?

This is the locator inside object span_Add:

(.//*[normalize-space(text()) and normalize-space(.)='✓'])[${Slot}]/following::span[1]

Version 7.0.8

Weird it works on the way back machine, but not on the actual website.

I stand correct. It is magically working now. Weird.