Overview
Catchpoint's Transaction Test support the Selenium language for scripting multi-step interactions with a website. A list of supported Selenium Actions can be found here. It is important to know what each action does and what effect it may have on test measurements. Two actions that are frequently used in Catchpoint are WaitForNoRequest and WaitForElementPresent. Each has its own use-cases and potential positive/negative effects depending on the situation.
Syntax and Examples:
First, let's outline the correct syntax for each of these actions, and then we'll discuss their purpose.
WaitForNoRequest(timeValue)
Example: WaitForNoRequest(3000)
This action tells the agent to wait for no HTTP requests on the network for the specified timeValue amount before continuing to the next action or ending the step/test. timeValue is an integer representing a number of milliseconds and can range from 1000-5000.
WaitForElementPresent(Element, timeValue)
(*timeValue is optional, default is 20,000ms)
Example: WaitForElementPresent(//*[@id="foo"])
This action tells the agent to wait for the specified element to be present on the page before continuing to the next action. TimeValue is an integer representing a number of milliseconds, and can range from 50 to 30,000.
Use Cases
WaitForNoRequest:
With WaitForNoRequest, you can tell the agent to wait for a specified amount of time before moving on to the next step. This allows necessary requests more time to load after document complete.
For instance, when you add waitforNoRequest(5000), initially the agent waits up to 5,000ms (5 seconds) after document complete for any network activity. If there is any network activity during that period, the agent resets the clock and waits another 5,000ms for additional network activity. The process goes on until no further requests load within the specified timeframe, as shown in the waterfall below:

WaitForElementPresent:
This is ideal when your end goal is to complete the action for that element once it arrives on the page, or to wait until that element is loaded on the website to move on with your transaction.
Limitations
WaitForNoRequest will only wait the specified amount of time after the last registered request before it moves on to the next action or ends the step/test. If the element you're interacting with in the next action isn't loaded onto the page yet, that action will fail and cause the test to fail due to the element not being present.
WaitForElementPresent will only wait 20,000ms (20 seconds) by default for the specified element to be loaded onto the page. If that element doesn't load in that time, then the test will fail. You can override this by specifying any time value up to 30 seconds (30,000 ms), as in this example:
`WaitForElementPresent("//*[@id='foo']", "30000")`.
Also, since WaitForElementPresent only waits until the specified element gets loaded onto the page, it drops all of the items that haven't finished loading, which causes a change in total items, as you can see in the graph below.
Both Actions will add time to a step, which will add time to the performance metrics if there are requests that get loaded as a result of the added wait time. Therefore you may see an apparent change in overall performance when adding these actions.
In summary, which of these two custom Catchpoint actions you use depends on your end goal for the Transaction Test. You may even use both of them within the same script on different steps, if needed.