[OpenLayers-Users] Testing with selenium IDE
Umberto Nicoletti
umberto.nicoletti at gmail.com
Wed Nov 14 08:55:33 PST 2012
FYI, I was able to investigate the issue and pinpoint a probable cause.
It seems that when selenium performs a 'click' event it actually sends
twice a mouseDown/mouseUp event sequence.
The first one has the correct location on the map: a couple of positive > 0
coordinates (say x=200,y=210)
The second one instead has totally bogus coordinates, negative coordinates
(say x=-20,y=-70)
Tha last event is registered as the last position at which a mouseDown
occurred and therefore when the click handler evaluates
this condition (
https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Handler/Click.js#L403)
it returns false and the event
is discarded, together with the first one (which had correct coordinates).
As a POC I have hacked a local copy of OL and changed the mouseDown event
handler as follows:
/**
* Method: mousedown
* Handle mousedown.
*
* Returns:
* {Boolean} Continue propagating this event.
*/
mousedown: function(evt) {
console.log('mousedown');
if(evt.xy && (evt.xy.x <= 0.0 && evt.xy.y <= 0.0)) {
return true;
}
this.down = this.getEventInfo(evt);
this.last = this.getEventInfo(evt);
console.log('mousedown '+this.down.xy);
console.log(evt);
return true;
},
You can see the original code at:
https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Handler/Click.js#L220
Note the logging statements and the check for <=0 coordinates. Events with
x,y both <=0 are discarded.
With these modifications I was able to successfully trigger the
getfeatureinfo control from selenium. While using the map myself I did not
find any negative side effect.
This looks pretty much like a Selenium issue to me, and I am going to
report it to them, but I just wanted to share the findings with you in the
hope that someone's light bulb turns itself on ;-)
Umberto
On Mon, Nov 12, 2012 at 5:32 PM, Umberto Nicoletti <
umberto.nicoletti at gmail.com> wrote:
> Hi all,
> I need (actually it's more want) to test an application that uses
> OpenLayers internally with selenium IDE (http://seleniumhq.org/).
>
> Unfortunately it seems I can't find the right event combination to
> reproduce a 'click' on the map which then triggers a getfeatureinfo request.
>
> I have already tried all possible permutations of
> mouseDownAt/mouseUpAt/click events, then played with timings and playback
> speed but without success.
>
> Interestingly enough if I try to record events with Selenium IDE nothing
> is recorded when I pan/click on the map.
>
> STFW did not help either: Openlayers and Selenium are mentioned only once,
> and with similar, unresolved issues as the ones I am seeing.
>
> So here I am asking the great OL community: has anyone, ever got
> OpenLayers to work, and how, with Selenium or any other in browser
> automated testing tool?
>
> Thanks in advance,
> Umberto
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20121114/f07e64b9/attachment.html>
More information about the Users
mailing list