I have defined a LocatorBuilder function and inserted it as the first element of LocatorBuilders array. It is working nicely. However, when I add an alert() at the top of my function, I observe that my function is being called twice for each user click that is recorded. Specifically, when I turn on recording and click a button on the page, the sequence of events is: 1) my function gets called, 2) the click is recorded utilizing the locator expression that I have produced, 3) the browser processes the click, 4) my function is called again.
Note - I can't find this documented anywhere, but I surmise that fundamentally, the recorder calls each function in the LocatorBuilders list, each returning a candidate locator expression, until it gets a non-null expression that matches exactly one element on the page.
So my function works as desired, but the extra function call seem redundant. Is there some valid reason that my expression builder function needs to be called more than once? For example, is it possible for the subject HTML element to change between calls? What is the recorder doing between successive calls to my function?
EDIT: DOH! I discovered that I was adding my function into the LocatorBuilders.order list twice. So now my function only gets called twice. Still though, why multiple calls?