As the code is similar, they can be merged together. I'll suggest you to break down the functions into smaller reusable chunks which will follow the [Single Responsibility Principle (SRP)][1]. These functions will be testable and reusable. Both functions are 1. Adding a delay of 500 milliseconds 2. Selecting elements from provided page 3. Clicking the first element from the collection 4. Finding an element from its ancestor and returning the `innerText` of it. As these are the steps, we can similarly divide those functions into smaller functions each doing the task of one step above. For first step (to add delay) I've not created a new function as I guess that is already created in utils module. ---------- The first function (Step #2) will select the elements from the page using the provided `xpath` and return the first of them. function getFirstVisiblePublication(page, xpath) { aqUtils.Delay(500); var elements = page.EvaluateXpath(xpath); return elements[0]; } The second function combines Steps #3 & #4; as #3 only requires to click the element I haven't created new function. The below function will accept the `page` in which the target element is to be searched and `xpath` of the element. This will call the above function to get the first element and click it. This function will return the text/label of the anchor element which is obtained by using the first element's ancestors. function getFirstVisiblePublicationAnchorLabel(page, xpath) { // Get first element var firstElement = getFirstVisiblePublication(page, xpath); firstElement.Click(); return firstElement.parent.parent.FindChildByXPath('//a').textContent; } ##Usage: Function can be called as follows: var hideButtonXpath = "//img[@title='To hide this item in your profile, mark it as invisible']"; var publicationTitle = getFirstVisiblePublicationAnchorLabel(PageObj, hideButtonXpath); [1]: https://en.wikipedia.org/wiki/Single_responsibility_principle