RE: Selenium Web Driver and OpenLayers 2.x: How to do an identify on a map?


I’ve had to test a web mapping application that use OpenLayers 2.x, using Selenium Web Driver in Java and using Firefox (I’m on Windows 7).

I’ve found only this issue: that doesn’t solve my problem.

I’ve had to test the identify function on features on the map, so:

1) Select the identify button on my toolbar (I’m able to do this … so no problem …)

2) Click on a point feature on the map (I’m not able to do this ….)

3) Close the dialog that shows the felatire descriptive data (I’m not able to do this ….)

I can’t give the url of my application because it’s not public but I can use this simple test case:

that shows my use case.

Clicking on the map, you’ll see the feature details and then close the dialog.

Here you’re my code that doesn’t work

package myTestProjects;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;

public class identifyOpenLayersTest_02 {

private static WebDriver driver = null;

public static void main(String[] args) throws InterruptedException {

// Create a new instance of the Firefox driver
System.out.println(“Create a new instance of the Firefox driver …”);
driver = new FirefoxDriver();

//Put a Implicit wait, this means that any search for elements on the page could take the time the implicit wait is set for before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

// It is always advisable to Maximize the window before performing DragNDrop action
System.out.println(“Maximize the window …”);

// Launch the OpenLayers 2.x marker sample
System.out.println(“Launch the OpenLayers 2.x marker sample …”);

// Create a new Action instance
System.out.println(“Create a new Action instance …”);
Actions act = new Actions(driver);

// Find the viewport inside in witch there is the map
System.out.println(“Find the viewport inside in witch there is the map …”);
WebElement el = driver.findElement(“OpenLayers_Map_2_OpenLayers_ViewPort”));

// Start the action sequence
System.out.println(“Start the action sequence …”);

// Identify marker
System.out.println(“Identify marker at 285, 111 …”);
act.moveToElement(el, 285, 111).click().build().perform();

// Print TEST = OK!!
System.out.println(“TEST = OK !!”);


I think I’m wrong to enter the coordinates of the point: I’m using Firefox Web Developer Extension to choose them but I’m not sure that they are right: are they absolute or relative to OpenLayers_Map_2_OpenLayers_ViewPort? I can not find examples that make me understand it how it works ….

Suggestions? Samples?

Thank you very much in advance!


cesare Train Asked on June 26, 2015 in Selenium WebDriver.
Add Comment
3 Answers

First of all … thank you for the reply!
Second … sorry for my english!!

Yes i’d like to click on the red icon on the map …..

I’m trying to obtain help on this stuff on different ways …. more details on the same question you can find here

If you run my code using this OpenLayers sample

you’ll see that it works, so the the problem seems (I think ….),  NOT to be about coordinates.  Click in some point on the green area and you’ll see come up a little baloon wuth some data inside. Everything is working as it should in this case.

Note that in this case I don’t have the marker on the map, because the map is built as images completely server generate, so I think that I need to use the coordinate: it will be the OpenLayers javascript libraries that knows how to manage this coordinates.

I think that the problem is that using this sample

the description data of the features is put in a DIV as you can see in the picture …. and I don’t know how to make it appear

RE: Selenium Web Driver and OpenLayers 2.x: How to do an identify on a map?

How can I show this DIV after my click?

Thank you very much in advance ….


Train Answered on June 29, 2015.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.