คลาสแอ็คชั่นใน 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();
        }
}

ผลลัพธ์ด้านล่างระบุอย่างชัดเจนว่าสีพื้นหลังโปร่งใสหลังจากวางเมาส์เหนือ

คลาสแอ็คชั่นใน Selenium

การสร้างชุดการดำเนินการหลายรายการ

คุณสามารถสร้างชุดการดำเนินการได้โดยใช้คลาสการดำเนินการและการดำเนินการ- อย่าลืมปิดซีรี่ส์ด้วยเมธอด 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