# How to click at specific coordinates?

**URL:** <https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041>\
**Category:** Miscellaneous\
**Tags:** start-page\
**Created:** [November 28, 2022, 4:01pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041 "2022-11-28T16:01:40Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:01pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/1 "2022-11-28T16:01:40Z")

</div>

Just want to set a mouse click at specific coordinates on page. How do I do this?

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 4:15pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/2 "2022-11-28T16:15:53Z")

</div>

There is the command, `WebUI.clickOffset(testObject TO, int x offset, int y offset)`. You can make some formula to calculate where you **are** to where you want to click. You can use `WebUI.findWebElement(testObject)` to get a WebElement that can get your current position.

```auto
myItem = WebUI.findWebElement(testObject, 10)
WebUI.comment("Current position is ${myItem.getLocation().getX().toString()} and ${myItem.getLocation().getY().toString()}")

```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:16pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/3 "2022-11-28T16:16:04Z")

</div>

I have tried the following `WebUI.clickOffset(findTestObject('Object Repository/Button Layers/Layer Views Location Option (Main Building)'),1515 , 445, FailureHandling.STOP_ON_FAILURE)` but it seems judging by the output I have to click on an object for this to work, and that is the whole issue I need to click off of an object.

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:16pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/4 "2022-11-28T16:16:42Z")

</div>

I will give this a try one sec.

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:20pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/5 "2022-11-28T16:20:35Z")

</div>

> [@grylion54](#):
>
> `and ${myItem.getLocation().getY()}"`

````auto
Test Cases/FAM/01 FAM DEV/Midwest 037 (DEV)/Plant View Layers FAILED.
Reason:
groovy.lang.MissingMethodException: No signature of method: static com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.findWebElement() is applicable for argument types: (java.lang.String) values: [Object Repository/Button Layers/Layer Views Location Option (Main Building)]```
````

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 4:22pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/6 "2022-11-28T16:22:32Z")

</div>

Ooops. The statement `WebUI.findWebElement(testObject, 10)` wants a timeOut.

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:24pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/7 "2022-11-28T16:24:42Z")

</div>

Yeah no such luck. Not sure as to the reason though. I know that this element exists I can use it and interact with it.

```auto
Test Cases/FAM/01 FAM DEV/Midwest 037 (DEV)/Plant View Layers FAILED.
Reason:
groovy.lang.MissingMethodException: No signature of method: static com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.findWebElement() is applicable for argument types: (java.lang.String, java.lang.Integer) values: [Object Repository/Button Layers/Layer Views Location Option (Main Building), ...]
Possible solutions: findWebElement(com.kms.katalon.core.testobject.TestObject, int), findWebElement(com.kms.katalon.core.testobject.TestObject), findWebElements(com.kms.katalon.core.testobject.TestObject, int)

```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:27pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/8 "2022-11-28T16:27:35Z")

</div>

Even if I could just send a mouse click to like 2,2 would be useful. I just need to get out of the drawer I am in. Its a full screen overlay and it is making this much harder than it needs to be

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 4:32pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/9 "2022-11-28T16:32:40Z")

</div>

> [@josh.meeks](#):
>
> `for argument types: (java.lang.String, java.lang.Integer)`

For some reason, your TestObject is treated as a String. If the String is the xpath to your TestObject, then you can either go directly to creating a WebElement, such as:

```auto
webItem = driver.findElement(By.xpath('your xpath'))
WebUI.comment("Current position is ${webItem.getLocation().getX().toString()} and ${webItem.getLocation().getY().toString()}")

```

or creating a TestObject and then on to a WebElement.

```auto
xpath = 'your pathway String'
TestObject to = new TestObject(xpath)
to.addProperty("xpath", ConditionType.EQUALS, xpath)

myItem = WebUI.findWebElement(to, 10)
WebUI.comment("Current position is ${myItem.getLocation().getX().toString()} and ${myItem.getLocation().getY().toString()}")

```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:35pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/10 "2022-11-28T16:35:04Z")

</div>

I will give it a shot. BTW ever since you suggested this as a way to make TOs I have been using it non stop! Much quicker and way easier on the upkeep. Thank you 🙂

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:41pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/11 "2022-11-28T16:41:23Z")

</div>

> [@grylion54](#):
>
> `webItem = driver.findElement(By.xpath('your xpath'))`

No such driver for class

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 4:45pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/12 "2022-11-28T16:45:19Z")

</div>

You probably need the import statements;

```auto
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

import org.openqa.selenium.WebDriver as WebDriver
import org.openqa.selenium.WebElement as WebElement

WebDriver driver = DriverFactory.getWebDriver();

```

You can get the import statements needed for your code by using: CTRL + SHIFT + O (oh).

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 4:48pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/13 "2022-11-28T16:48:28Z")

</div>

````auto
Test Cases/FAM/01 FAM DEV/Midwest 037 (DEV)/Plant View Layers FAILED.
Reason:
groovy.lang.MissingPropertyException: No such property: driver for class: Script1669147181992```
````

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 5:05pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/14 "2022-11-28T17:05:15Z")

</div>

Ok I have got it to get the coordinates by running the add.property.

```auto
LocationSelection='//mat-option[@id="mat-option-47"]/span'
TestObject to = new TestObject(LocationSelection)
to.addProperty("xpath",ConditionType.EQUALS,LocationSelection)
myItem = WebUI.findWebElement(to,10)
WebUI.comment("Current position is ${myItem.getLocation().getX()} and ${myItem.getLocation().getY()}")

```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 5:05pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/15 "2022-11-28T17:05:45Z")

</div>

Current position 1428 and 250

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 5:27pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/16 "2022-11-28T17:27:59Z")

</div>

> [@josh.meeks](#):
>
> ```auto
> WebUI.clickOffset(findTestObject('Object Repository/Button Layers/Layer Views Location Option (Main Building)'),1515 , 445, FailureHandling.STOP_ON_FAILURE)
> 
> ```

So, if you want to click at location, (2, 2), then subtract the difference:

```auto
WebUI.clickOffset(findTestObject('Button Layers/Layer Views Location Option (Main Building)'), -1426 , -443, FailureHandling.STOP_ON_FAILURE)

```

It might be wise to create a formula of the current position’s X and Y, minus 2 from each, and then put the result in the clickOffset statement.

```auto
myItem = WebUI.findWebElement(to,10)
WebUI.comment("Current position is ${myItem.getLocation().getX()} and ${myItem.getLocation().getY()}")

xResult = myItem.getLocation().getX() - 2;
yResult = myItem.getLocation().getY() - 2;

WebUI.comment("Calculated amounts are: ${xResult.toString()} and ${yResult.toString()}")

WebUI.clickOffset(findTestObject('Button Layers/Layer Views Location Option (Main Building)'), -xResult, -yResult, FailureHandling.STOP_ON_FAILURE)
```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 5:44pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/17 "2022-11-28T17:44:44Z")

</div>

> [@josh.meeks](#):
>
> ```auto
> LocationSelection='//mat-option[@id="mat-option-47"]/span'
> TestObject to = new TestObject(LocationSelection)
> to.addProperty("xpath",ConditionType.EQUALS,LocationSelection)
> myItem = WebUI.findWebElement(to,10)
> WebUI.comment("Current position is ${myItem.getLocation().getX()} and ${myItem.getLocation().getY()}")
> 
> ```

Thank you, that I will do. Dont know why but it worked the first time around and now it wont so Im back to square one.

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 5:45pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/18 "2022-11-28T17:45:58Z")

</div>

Keeps failing at the comment line now

```auto
Test Cases/FAM/01 FAM DEV/Midwest 037 (DEV)/Plant View Layers FAILED.
Reason:
groovy.lang.MissingPropertyException: No such property: getLocation for class: org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement

```

---

<div class="post-metadata">

**Author:** ![grylion54](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/grylion54/32/16265_2.png) [@grylion54](https://forum.katalon.com/u/grylion54)\
**Post date:** [November 28, 2022, 5:47pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/19 "2022-11-28T17:47:00Z")

</div>

> [@josh.meeks](#):
>
> `WebUI.comment("Current position is ${myItem.getLocation().getX()} and ${myItem.getLocation().getY()}")`

How about:

```auto
WebUI.comment("Current position is ${myItem.getLocation().getX().toString()} and ${myItem.getLocation().getY().toString()}")

```

---

<div class="post-metadata">

**Author:** ![josh.meeks](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/josh.meeks/32/25928_2.png) [@josh.meeks](https://forum.katalon.com/u/josh.meeks)\
**Post date:** [November 28, 2022, 5:50pm UTC](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041/20 "2022-11-28T17:50:10Z")

</div>

Same issue

[Next page](https://forum.katalon.com/t/how-to-click-at-specific-coordinates/81041.md?page=2)
