1. 程式人生 > >Selenium中的滑鼠單擊事件

Selenium中的滑鼠單擊事件

原作者:https://www.cnblogs.com/lingling99/p/5750266.html
滑鼠點選操作 滑鼠點選事件有以下幾種型別: 清單 1. 滑鼠左鍵點選  Actions action = new Actions(driver);action.click();// 滑鼠左鍵在當前停留的位置做單擊操作  action.click(driver.findElement(By.name(element)))// 滑鼠左鍵點選指定的元素 清單 2. 滑鼠右鍵點選  Actions action = new Actions(driver);   action.contextClick();// 滑鼠右鍵在當前停留的位置做單擊操作  action.contextClick(driver.findElement(By.name(element)))// 滑鼠右鍵點選指定的元素 清單 3. 滑鼠雙擊操作  Actions action = new Actions(driver);   action.doubleClick();// 滑鼠在當前停留的位置做雙擊操作  var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    action.doubleClick(driver.findElement(By.name(element)))// 滑鼠雙擊指定的元素 清單 4. 滑鼠拖拽動作  Actions action = new Actions(driver);  // 滑鼠拖拽動作,將 source 元素拖放到 target 元素的位置。  action.dragAndDrop(source,target); // 滑鼠拖拽動作,將 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 為橫座標,yOffset 為縱座標。 action.dragAndDrop(source,xOffset,yOffset); 在這個拖拽的過程中,已經使用到了滑鼠的組合動作,首先是滑鼠點選並按住 (click-and-hold) source 元素,然後執行滑鼠移動動作 (mouse move),移動到 target 元素位置或者是 (xOffset, yOffset) 位置,再執行滑鼠的釋放動作 (mouse release)。所以上面的方法也可以拆分成以下的幾個執行動作來完成: action.clickAndHold(source).moveToElement(target).perform();   action.release(); 清單 5. 滑鼠懸停操作  Actions action = new Actions(driver);   action.clickAndHold();// 滑鼠懸停在當前位置,既點選並且不釋放  action.clickAndHold(onElement);// 滑鼠懸停在 onElement 元素的位置 action.clickAndHold(onElement) 這個方法實際上是執行了兩個動作,首先是滑鼠移動到元素 onElement,然後再 clickAndHold, 所以這個方法也可以寫成 action.moveToElement(onElement).clickAndHold()。 清單 6. 滑鼠移動操作  Actions action = new Actions(driver);   action.moveToElement(toElement);// 將滑鼠移到 toElement 元素中點 // 將滑鼠移到元素 toElement 的 (xOffset, yOffset) 位置, //這裡的 (xOffset, yOffset) 是以元素 toElement 的左上角為 (0,0) 開始的 (x, y) 座標軸。  var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120; action.moveToElement(toElement,xOffset,yOffset) // 以滑鼠當前位置或者 (0,0) 為中心開始移動到 (xOffset, yOffset) 座標軸  action.moveByOffset(xOffset,yOffset); action.moveByOffset(xOffset,yOffset) 這裡需要注意,如果 xOffset 為負數,表示橫座標向左移動,yOffset 為負數表示縱座標向上移動。而且如果這兩個值大於當前螢幕的大小,滑鼠只能移到螢幕最邊界的位置同時丟擲 MoveTargetOutOfBoundsExecption 的異常。 滑鼠移動操作在測試環境中比較常用到的場景是需要獲取某元素的 flyover/tips,實際應用中很多 flyover 只有當滑鼠移動到這個元素之後才出現,所以這個時候通過執行 moveToElement(toElement) 操作,就能達到預期的效果。但是根據我個人的經驗,這個方法對於某些特定產品的圖示,影象之類的 flyover/tips 也不起作用,雖然在手動操作的時候移動滑鼠到這些圖示上面可以出現 flyover, 但是當使用 WebDriver 來模擬這一移動操作時,雖然方法成功執行了,但是 flyover 卻出不來。所以在實際應用中,還需要對具體的產品頁面做相應的處理。 清單 7. 滑鼠釋放操  Actions action = new Actions(driver);   action.release();// 釋放滑鼠 PS:一般只使用移動的事件,不點選的情況下滑鼠事件可以不釋放