鼠標點擊操做
鼠標點擊事件有如下幾種類型:
清單 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:通常只使用移動的事件,不點擊的狀況下鼠標事件能夠不釋放