1. 程式人生 > >Selenium WebDriver 中鼠標事件(全)

Selenium WebDriver 中鼠標事件(全)

ron 需要 圖標 script tle creat form append 當前

Selenium WebDriver 中鼠標事件(全)

鼠標點擊操作 鼠標點擊事件有以下幾種類型: 清單 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:一般只使用移動的事件,不點擊的情況下鼠標事件可以不釋放

Selenium WebDriver 中鼠標事件(全)