คลาสแอ็คชั่นใน Selenium – กิจกรรมการคลิกเมาส์และคีย์บอร์ด
ในบทช่วยสอนนี้ เราจะเรียนรู้การจัดการเหตุการณ์คีย์บอร์ดและเมาส์ Selenium ไดรเวอร์เว็บ
คลาสแอ็คชั่นใน Selenium
คลาสแอ็คชั่นใน Selenium เป็นฟีเจอร์ในตัวที่ Selenium จัดเตรียมไว้สำหรับจัดการเหตุการณ์คีย์บอร์ดและเมาส์ ฟีเจอร์นี้ประกอบด้วยการดำเนินการต่างๆ เช่น การคลิกหลายเหตุการณ์ด้วยปุ่มควบคุม การลากและวาง และอื่นๆ อีกมากมาย การดำเนินการเหล่านี้จากคลาสการดำเนินการจะดำเนินการโดยใช้ API การโต้ตอบผู้ใช้ขั้นสูงใน Selenium เว็บไดรเวอร์
การจัดการเหตุการณ์แป้นพิมพ์และเมาส์
การจัดการเหตุการณ์แป้นพิมพ์และเมาส์พิเศษทำได้โดยใช้ API การโต้ตอบของผู้ใช้ขั้นสูง. มันมี สถานะ และ การกระทำ คลาสที่จำเป็นเมื่อดำเนินการเหตุการณ์เหล่านี้ ต่อไปนี้คือเหตุการณ์คีย์บอร์ดและเมาส์ที่ใช้กันทั่วไปที่สุดที่จัดทำโดยคลาส Actions
วิธี | Descriptไอออน |
---|---|
คลิกและถือ() | คลิก (โดยไม่ปล่อย) ที่ตำแหน่งเมาส์ปัจจุบัน |
บริบทคลิก() | ทำการคลิกบริบทที่ตำแหน่งเมาส์ปัจจุบัน (การกระทำของเมาส์คลิกขวา) |
ดับเบิลคลิก() | ดำเนินการดับเบิลคลิกที่ตำแหน่งเมาส์ปัจจุบัน |
DragAndDrop(แหล่งที่มา เป้าหมาย) | ดำเนินการคลิกค้างไว้ที่ตำแหน่งขององค์ประกอบต้นทาง ย้ายไปยังตำแหน่งขององค์ประกอบเป้าหมาย จากนั้นปล่อยเมาส์
พารามิเตอร์: แหล่งที่มา- องค์ประกอบที่จะจำลองปุ่มลงที่ เป้าหมาย- องค์ประกอบที่จะย้ายไปและปล่อยเมาส์ที่ |
DragAndDropBy (แหล่งที่มา, x-offset, y-offset) | ดำเนินการคลิกค้างไว้ที่ตำแหน่งขององค์ประกอบต้นทาง เคลื่อนที่ตามออฟเซ็ตที่กำหนด จากนั้นปล่อยเมาส์
พารามิเตอร์: แหล่งที่มา- องค์ประกอบที่จะจำลองปุ่มลงที่ xOffset- ชดเชยการย้ายแนวนอน yOffset- ออฟเซ็ตการย้ายแนวตั้ง |
keyDown (ตัวดัดแปลง_คีย์) | ดำเนินการกดปุ่มตัวปรับแต่ง ไม่ปล่อยคีย์ตัวปรับแต่ง - การโต้ตอบในภายหลังอาจถือว่ามีการกดค้างไว้
พารามิเตอร์: modifier_key – ปุ่มปรับเปลี่ยนใดๆ (Keys.ALT, Keys.SHIFT หรือ Keys.CONTROL) |
keyUp (ตัวแก้ไข _key) | ดำเนินการปล่อยกุญแจ
พารามิเตอร์: modifier_key – ปุ่มปรับเปลี่ยนใดๆ (Keys.ALT, Keys.SHIFT หรือ Keys.CONTROL) |
moveByOffset(x-ออฟเซ็ต, y-ออฟเซ็ต) | เลื่อนเมาส์จากตำแหน่งปัจจุบัน (หรือ 0,0) ตามออฟเซ็ตที่กำหนด
พารามิเตอร์: x-offset- ชดเชยแนวนอน ค่าลบหมายถึงการเลื่อนเมาส์ไปทางซ้าย y-offset- ชดเชยแนวตั้ง ค่าลบหมายถึงการเลื่อนเมาส์ลง |
moveToElement(เป็นองค์ประกอบ) | เลื่อนเมาส์ไปที่กึ่งกลางขององค์ประกอบ
พารามิเตอร์: toElement- องค์ประกอบที่จะย้ายไป |
ปล่อย() | ปล่อยปุ่มซ้ายของเมาส์ที่กดที่ตำแหน่งเมาส์ปัจจุบัน |
sendKeys (onElement, ตัวอักษร) | ส่งชุดของการกดแป้นพิมพ์ไปยังองค์ประกอบ
พารามิเตอร์: onElement – องค์ประกอบที่จะรับการกดแป้นพิมพ์ โดยปกติจะเป็นช่องข้อความ charsequence – ค่าสตริงใดๆ ที่แสดงลำดับการกดแป้นพิมพ์ที่จะส่ง |
ในตัวอย่างต่อไปนี้ เราจะใช้เมธอด moveToElement() เพื่อเลื่อนเมาส์ไปเหนือรายการใดรายการหนึ่ง Mercury แถวโต๊ะทัวร์ ดูตัวอย่างด้านล่าง
เซลล์ที่แสดงด้านบนนี้เป็นส่วนหนึ่งของเซลล์ องค์ประกอบ. ถ้าไม่โฮเวอร์ สีของมันคือ #FFC455 (สีส้ม) หลังจากโฮเวอร์ สีของเซลล์จะโปร่งใส มันจะกลายเป็นสีเดียวกับพื้นหลังสีน้ำเงินของโต๊ะสีส้มทั้งหมด
ขั้นตอน 1) นำเข้า สถานะ รวมถึง การกระทำ ชั้นเรียน
ขั้นตอน 2) สร้างอินสแตนซ์ของวัตถุ Actions ใหม่
ขั้นตอน 3) สร้างอินสแตนซ์ของการดำเนินการโดยใช้ออบเจ็กต์ Actions ในขั้นตอนที่ 2
ในกรณีนี้ เราจะใช้เมธอด moveToElement() เนื่องจากเราจะเพียงเลื่อนเมาส์ไปที่ลิงก์ “Home” เมธอด build() เป็นวิธีสุดท้ายที่ใช้เสมอ เพื่อให้การดำเนินการทั้งหมดที่ระบุไว้จะถูกรวบรวมเป็นขั้นตอนเดียว
ขั้นตอน 4) ใช้เมธอดดำเนินการ () เมื่อดำเนินการออบเจ็กต์ Action ที่เราออกแบบในขั้นตอนที่ 3
ด้านล่างนี้เป็นโค้ด WebDriver ทั้งหมดเพื่อตรวจสอบสีพื้นหลังของ องค์ประกอบก่อนและหลังการเลื่อนเมาส์
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; public class PG7 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement link_Home = driver.findElement(By.linkText("Home")); WebElement td_Home = driver .findElement(By .xpath("//html/body/div" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr")); Actions builder = new Actions(driver); Action mouseOverHome = builder .moveToElement(link_Home) .build(); String bgColor = td_Home.getCssValue("background-color"); System.out.println("Before hover: " + bgColor); mouseOverHome.perform(); bgColor = td_Home.getCssValue("background-color"); System.out.println("After hover: " + bgColor); driver.close(); } }
ผลลัพธ์ด้านล่างระบุอย่างชัดเจนว่าสีพื้นหลังโปร่งใสหลังจากวางเมาส์เหนือ
การสร้างชุดการดำเนินการหลายรายการ
คุณสามารถสร้างชุดการดำเนินการได้โดยใช้คลาสการดำเนินการและการดำเนินการ- อย่าลืมปิดซีรี่ส์ด้วยเมธอด build() พิจารณาโค้ดตัวอย่างด้านล่าง
public static void main(String[] args) { String baseUrl = "http://www.facebook.com/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement txtUsername = driver.findElement(By.id("email")); Actions builder = new Actions(driver); Action seriesOfActions = builder .moveToElement(txtUsername) .click() .keyDown(txtUsername, Keys.SHIFT) .sendKeys(txtUsername, "hello") .keyUp(txtUsername, Keys.SHIFT) .doubleClick(txtUsername) .contextClick() .build(); seriesOfActions.perform() ; }
สรุป
- การจัดการเหตุการณ์แป้นพิมพ์และเมาส์พิเศษทำได้โดยใช้ AdvancedUserInteractions API
- คีย์เวิร์ดและเหตุการณ์เมาส์ที่ใช้บ่อยคือ doubleClick(), keyUp, dragAndDropBy, contextClick และ sendKeys