Drag and Drop for Windows app tesing

Drag and drop is missing in Windows app testing…
WebElement fEle = Windows.findElement(findWindowsObject(‘Object Repository/ItineraryTab/Location Service/bt_Handling’))
WebElement tEle = Windows.findElement(findWindowsObject(‘Object Repository/ItineraryTab/More Service Tab/Location Service/LocationService_one’))
Actions act = new Actions(Windows)
act.dragAndDrop(fEle, tEle).build().perform();

I use action class for this but I’m getting below listed error.

From Log view:

Test Cases/Falcon Trip/Add crew and pax existing trip FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Test object cannot be null (Root cause: java.lang.IllegalArgumentException: Test object cannot be null
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.findElement(WindowsActionHelper.java:42)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.click(WindowsActionHelper.java:139)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:43)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:77)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:37)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:33)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords.click(WindowsBuiltinKeywords.java:69)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords$click$4.call(Unknown Source)
at Add crew and pax existing trip.run(Add crew and pax existing trip:61)
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$0.call(Unknown Source)
at TempTestCase1574289120868.run(TempTestCase1574289120868.groovy:23)
)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:50)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:79)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:37)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:33)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords.click(WindowsBuiltinKeywords.java:69)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords$click$4.call(Unknown Source)
at Add crew and pax existing trip.run(Add crew and pax existing trip:61)
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$0.call(Unknown Source)
at TempTestCase1574289120868.run(TempTestCase1574289120868.groovy:23)
Caused by: java.lang.IllegalArgumentException: Test object cannot be null
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.findElement(WindowsActionHelper.java:42)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.click(WindowsActionHelper.java:139)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:43)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:77)
… 19 more

from console

WARN c.k.k.c.t.i.i.WindowsObjectRepository - Cannot find test object with id ‘Object Repository/ItineraryTab/Location Service/bt_Handling’ because of ‘org.dom4j.DocumentException: D:\Repository\falcon-all\Falcon.UIAutomation\Object Repository\ItineraryTab\Location Service\bt_Handling.wrs (The system cannot find the path specified) Nested exception: D:\Repository\falcon-all\Falcon.UIAutomation\Object Repository\ItineraryTab\Location Service\bt_Handling.wrs (The system cannot find the path specified)’
2019-11-20 16:33:35.164 ERROR c.k.k.core.keyword.internal.KeywordMain - :x: Test object cannot be null (Root cause: java.lang.IllegalArgumentException: Test object cannot be null
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.findElement(WindowsActionHelper.java:42)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.click(WindowsActionHelper.java:139)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:43)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:77)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:37)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:33)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords.click(WindowsBuiltinKeywords.java:69)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords$click$4.call(Unknown Source)
at Add crew and pax existing trip.run(Add crew and pax existing trip:61)
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$0.call(Unknown Source)
at TempTestCase1574289120868.run(TempTestCase1574289120868.groovy:23)
)
2019-11-20 16:33:35.164 ERROR c.k.katalon.core.main.TestCaseExecutor - :x: Test Cases/Falcon Trip/Add crew and pax existing trip FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Test object cannot be null (Root cause: java.lang.IllegalArgumentException: Test object cannot be null
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.findElement(WindowsActionHelper.java:42)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.click(WindowsActionHelper.java:139)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:43)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:77)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:37)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:33)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords.click(WindowsBuiltinKeywords.java:69)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords$click$4.call(Unknown Source)
at Add crew and pax existing trip.run(Add crew and pax existing trip:61)
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$0.call(Unknown Source)
at TempTestCase1574289120868.run(TempTestCase1574289120868.groovy:23)
)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:50)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:79)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:37)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$click.callCurrent(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:33)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:60)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords.click(WindowsBuiltinKeywords.java:69)
at com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords$click$4.call(Unknown Source)
at Add crew and pax existing trip.run(Add crew and pax existing trip:61)
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$0.call(Unknown Source)
at TempTestCase1574289120868.run(TempTestCase1574289120868.groovy:23)
Caused by: java.lang.IllegalArgumentException: Test object cannot be null
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.findElement(WindowsActionHelper.java:42)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper.click(WindowsActionHelper.java:139)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.helper.WindowsActionHelper$click$3.call(Unknown Source)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy:43)
at com.kms.katalon.core.windows.keyword.builtin.ClickKeyword$_click_closure1.doCall(ClickKeyword.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:77)
… 19 more

Please make sure this Windows Object file:

D:\Repository\falcon-all\Falcon.UIAutomation\Object Repository\ItineraryTab\Location Service\bt_Handling.wrs

does appear in the Windows system.

Thanks

Sample drag and drop keywords, we will add these keywords in some next major release.

import org.openqa.selenium.WebElement
import org.openqa.selenium.interactions.Actions

import com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.testobject.WindowsTestObject
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows

import io.appium.java_client.AppiumDriver

public class WindowsEnhancedKeyword {
	

	@Keyword
	def static dragAnDrop(WindowsTestObject sourceObject, WindowsTestObject targetObject) {
		WebElement fromElement = Windows.findElement(sourceObject)
		WebElement toElement = Windows.findElement(targetObject)

		AppiumDriver<?> driver = Windows.getDriver()

		Actions action = new Actions(driver)
		action.moveToElement(fromElement).clickAndHold().moveToElement(toElement).release().perform()
	}

	@Keyword
	def static dragAnDrop(WebElement fromElement, WebElement toElement) {
		AppiumDriver<?> driver = Windows.getDriver()

		Actions action = new Actions(driver)
		action.moveToElement(fromElement).clickAndHold().moveToElement(toElement).release().perform()
	}

}