2015-09-17 108 views
1

我需要使用Selenium WebDriver(java)按住Ctrl +鼠標單擊鍵。我需要在腳本中選擇多個元素。 有什麼辦法可以做到嗎?使用java在Selenium WebDriver中按鍵(Ctrl +鼠標單擊)

我檢查了硒庫,發現硒只允許按下特殊鍵和功能鍵。

+2

那麼認爲文檔是撒謊?或者你真正的問題是什麼? – lenz

+0

歡迎來到Stack Overflow!請閱讀指南[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask),尤其是關於最小,完整和可驗證示例(MCVE)的部分。這將幫助你爲自己解決問題。如果你這樣做,仍然卡住,你可以回來發佈你的MCVE,你試過的,以及結果是什麼,所以我們可以更好地幫助你。 – JeffC

回答

0

您使用jQuery代碼

JavascriptExecutor js = (JavascriptExecutor) driver; 
String script = "e = jQuery.Event('click');e.ctrlKey = true; $('secondRow_Css_locator').trigger(e);"; 
js.executeScript(script); 

實現相同或者你也可以使用機器人類,但是它可以鎖定屏幕一會兒在webdriver的

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
robot.mousePress(InputEvent.BUTTON1_MASK); 
robot.mouseRelease(InputEvent.BUTTON1_MASK); 
6

已經有寫庫操作,你可以使用。

簡要說明發生了什麼:

首先你按下控制按鈕,然後你點擊(在這種情況下)對你的定義WebElemen的對象3次),那麼你的unpressing控制並完成您的操作。

在這種情況下,您可以根據您的WebElements的內容來完成3項選擇(或打開3個新選項卡)。

Actions actions = new Actions(driver); 
actions.keyDown(Keys.LEFT_CONTROL) 
    .click(first_WebElement) 
    .click(second_WebElement) 
    .click(third_WebElement) 
    .keyUp(Keys.LEFT_CONTROL) 
    .build() 
    .perform(); 
+0

請提供更多信息給您的答案。 – Clashsoft

+0

是的,對不起,我已經更新了我的答案。 – Arsey

0

Actions action = new Actions(driver);

action.keyDown(Keys.CONTROL).build().perform(); 
    driver.findElement(By.xpath(".//*[@id='selectable']/li[1]")).click(); 
    driver.findElement(By.xpath(".//*[@id='selectable']/li[3]")).click(); 
    action.keyUp(Keys.CONTROL).build().perform(); 
相關問題