I have a problem with my Selenium code not performing correctly the keyPress + click operation.
The test should open the jqueryui.com link and select the first 2 li elements on the page.
I am using Selenium 2.23 and Firefox 10. My code is as follows (I have trie 4 different ways to get it working but none performed):
FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true); WebDriver browser = new FirefoxDriver(profile); browser.get("http://jqueryui.com/demos/selectable/");
List elements = browser.findElements(By.cssSelector("ol#selectable li"));
Actions a = new Actions(browser); a.keyDown(Keys.CONTROL) .moveToElement(elements.get(0)) .click() .moveToElement(elements.get(1)) .click() .keyUp(Keys.CONTROL) .build() .perform(); Keyboard keyboard = ((HasInputDevices) browser).getKeyboard(); keyboard.pressKey(Keys.CONTROL); List<WebElement> selectOptions = browser.findElements(By.cssSelector("ol#selectable li")); selectOptions.get(1).click(); selectOptions.get(3).click(); keyboard.releaseKey(Keys.CONTROL);
Actions builder = new Actions(browser);
builder.keyDown(elements.get(0), Keys.CONTROL)
.click(elements.get(0))
.click(elements.get(1))
.keyUp(Keys.CONTROL);
Action selectMultiple = builder.build();
selectMultiple.perform();
Robot robot = new Robot();
robot.delay(1000);
robot.keyPress(KeyEvent.CTRL_MASK);
elements.get(0).click();
elements.get(1).click();
robot.keyRelease(KeyEvent.CTRL_MASK);
browser.quit();
Can anyone help me with some other suggestions?
I really have no idea why none of your attempts work (particularly the first one). The key constants are a mess.
Anyway, I have been able to make this work (on Windows XP):
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
elements.get(0).click();
elements.get(1).click();
robot.keyRelease(KeyEvent.VK_CONTROL);