คลิกขวาและ Double คลิกเข้า Selenium

⚡ สรุปอย่างชาญฉลาด

คลิกขวาและ Double คลิกเข้า Selenium การกระทำของเมาส์จะถูกทำให้เป็นอัตโนมัติผ่านคลาส Actions หรือไม่ บทช่วยสอนนี้จะสาธิตการทำงานทั้งสองแบบพร้อมตัวอย่างการใช้งานจริง Java โค้ด สถานการณ์ทดสอบจริง และวิธีการที่ขับเคลื่อนสถานการณ์เหล่านั้นภายใน Selenium เว็บไดร์เวอร์

  • 🖱️ วิธีการหลัก: คลาส Actions มีฟังก์ชัน contextClick() สำหรับคลิกขวา และ doubleClick() สำหรับดับเบิ้ลคลิกบน WebElement ใดๆ ก็ได้
  • 🧭 รูปแบบขั้นตอนการทำงาน: ค้นหาองค์ประกอบ สร้างอินสแตนซ์ของ Actions ด้วยไดรเวอร์ เรียกใช้แอ็กชัน และเชื่อมโยง perform() เพื่อดำเนินการ
  • 🧪 สถานการณ์ที่ทดสอบ: ตัวอย่างทั้งสองนี้ใช้ demo.guru99.com/test/simple_context_menu.html เป็นเป้าหมาย เพื่อให้ได้ผลลัพธ์ที่ตรวจสอบได้และสามารถทำซ้ำได้
  • 🆚 ความแตกต่างของการกระทำ: คลิกขวาเพื่อเปิดเมนูบริบท; ดับเบิ้ลคลิกจะเรียกการเปลี่ยนแปลงสถานะ เช่น การแจ้งเตือนหรือการแก้ไข
  • 🤖 การรวม AI: อุปกรณ์ระบุตำแหน่งที่ซ่อมแซมตัวเองได้ และระบบช่วยเหลือด้วย AI Selenium เฟรมเวิร์กช่วยลดความไม่เสถียรระหว่างการคลิก

คลิกขวาและ Double คลิกเข้า Selenium

คลิกขวาเข้าไป Selenium

คลิกขวาที่การกระทำใน Selenium การทำงานของ WebDriver นั้นใช้คลาส Actions การดำเนินการนี้เรียกอีกอย่างว่า Context Click โดยมีการกำหนดค่าไว้ล่วงหน้าแล้ว contextClick() เมธอดของคลาส Actions ทำหน้าที่คลิกขวา ด้านล่างนี้คือไวยากรณ์พื้นฐาน

Actions actions = new Actions(driver);
WebElement elementLocator = driver.findElement(By.id("ID"));
actions.contextClick(elementLocator).perform();

วิธีคลิกขวาเข้า Selenium

สถานการณ์ด้านล่างนี้จะเริ่มต้นขึ้น Guruหน้าสาธิต 99 คลิกขวา แล้วเลือกตัวเลือกจากเมนูบริบทที่ปรากฏขึ้น

สถานการณ์การทดสอบ:

  1. เปิด: https://demo.guru99.com/test/simple_context_menu.html
  2. คลิกขวาที่ปุ่ม “คลิกขวาที่ฉัน”
  3. คลิกที่ลิงก์ แก้ไข ในเมนูที่แสดง
  4. คลิกตกลงในข้อความแจ้งเตือน
  5. ปิดเบราว์เซอร์

Code:

package test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class ContextClick {
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
        driver = new ChromeDriver();

        driver.get("https://demo.guru99.com/test/simple_context_menu.html");
        driver.manage().window().maximize();

        Actions action = new Actions(driver);
        WebElement link = driver.findElement(By.cssSelector(".context-menu-one"));
        action.contextClick(link).perform();

        WebElement element = driver.findElement(By.cssSelector(".context-menu-icon-copy"));
        element.click();
    }
}

ผลลัพธ์: เมนูบริบทจะปรากฏขึ้น และตัวเลือก "แก้ไข" จะถูกเลือกไว้

คลิกขวาเข้าไป Selenium

Double คลิกเข้า Selenium

โดยใช้รูปแบบที่เน้นการกระทำเช่นเดียวกัน Double คลิกเข้า Selenium WebDriver ใช้ค่าที่กำหนดไว้ล่วงหน้า doubleClick() เมธอด คลาส Actions เป็นตัวช่วยมาตรฐานสำหรับการดำเนินการเมาส์และคีย์บอร์ดแบบผสมผสาน เช่น การคลิกขวา การลากและวาง และการวางเมาส์เหนือวัตถุ

Actions actions = new Actions(driver);
WebElement elementLocator = driver.findElement(By.id("ID"));
actions.doubleClick(elementLocator).perform();

ลำดับการดำเนินการมีดังนี้:

  • สร้างอ็อบเจ็กต์ Actions โดยใช้ instance ของ driver
  • ค้นหาองค์ประกอบเป้าหมายด้วย findElement.
  • โทร doubleClick() และโซ่ perform() เพื่อดำเนินการ

วิธีการ Double คลิกเข้า Selenium

สถานการณ์ต่อไปนี้แสดงให้เห็นถึงการดับเบิ้ลคลิกแบบเต็มรูปแบบซึ่งจะเรียกใช้งาน... Javaสคริปต์จะแจ้งเตือนและยืนยันการแจ้งเตือนนั้นโดยอัตโนมัติ

สถานการณ์การทดสอบ:

  • เปิด: https://demo.guru99.com/test/simple_context_menu.html
  • Double คลิกปุ่ม “Double-คลิกที่นี่เพื่อดูการแจ้งเตือน"
  • คลิกตกลงในข้อความแจ้งเตือน

Code:

package test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.Alert;

public class DoubleClickDemo {
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
        driver = new ChromeDriver();

        driver.get("https://demo.guru99.com/test/simple_context_menu.html");
        driver.manage().window().maximize();

        Actions action = new Actions(driver);
        WebElement link = driver.findElement(By.xpath("//button[text()='Double-Click Me To See Alert']"));
        action.doubleClick(link).perform();

        Alert alert = driver.switchTo().alert();
        System.out.println("Alert Text\n" + alert.getText());
        alert.accept();
    }
}

ผลลัพธ์: ข้อความแจ้งเตือนจะปรากฏขึ้นและข้อความแจ้งเตือนจะถูกพิมพ์ลงบนหน้าจอ Eclipse ปลอบใจ

Double คลิกเข้า Selenium เตือนภัย

Double คลิกเอาต์พุตคอนโซล

คำถามที่พบบ่อย

WebElement.click() จะเรียกใช้เฉพาะการคลิกซ้ายเท่านั้น การคลิกขวาและการดับเบิ้ลคลิกเป็นเหตุการณ์เมาส์แบบซับซ้อนที่ต้องใช้คลาส Actions ในการเชื่อมโยงและส่งต่อผ่าน perform()

ใช่แล้ว contextClick() จำลองการคลิกขวาจริง ๆ และเปิดเมนูบริบทของแอปพลิเคชัน คำศัพท์ทั้งสองคำนี้ใช้แทนกันได้ในบางครั้ง Selenium เอกสาร

คลาส Actions จะจัดคิวเหตุการณ์ต่างๆ หากไม่มีเมธอด perform() ขั้นตอนที่เชื่อมโยงกันจะไม่ถูกส่งออกไป เมธอด perform() จะล้างคิวและดำเนินการแต่ละแอ็กชันที่อยู่ในคิวตามลำดับ

ใช่ JavaScript Executor สามารถสั่งการดับเบิ้ลคลิกได้ แต่จะข้ามการทำงานของเหตุการณ์จริงในเบราว์เซอร์ วิธีการใช้ Actions จึงเป็นวิธีที่แนะนำ Selenium มาตรฐาน.

ใช่แล้ว การคลิกขวาและดับเบิ้ลคลิกผ่าน Actions สามารถใช้งานได้ใน Chrome แบบ Headless และ Firefox โดยมีเงื่อนไขว่าต้องรองรับ W3C Actions API ด้วย Selenium ไดรเวอร์ทั้ง 4 ตัวรองรับฟังก์ชันนี้อย่างสมบูรณ์

นักเรียนในชั้นเรียน Actions เดินทางมาถึงแล้ว Selenium WebDriver 2.0 อยู่ภายใน org.openqa.selenium.interactions และถูกเก็บรักษาไว้ใน Selenium ข้อ 3 และ 4 รองรับมาตรฐาน W3C Actions แล้ว

เครื่องมือ AI และ Selenium ทางเลือก ใช้ตัวระบุตำแหน่งที่แก้ไขตัวเองได้ ซึ่งปรับตัวให้เข้ากับการเปลี่ยนแปลงขององค์ประกอบระหว่างการคลิก ลดความล้มเหลวที่ไม่เสถียรจากรหัสประจำตัวแบบไดนามิกหรือเค้าโครงที่เปลี่ยนแปลงไป

ใช่แล้ว ผู้ช่วยเขียนโค้ด AI สามารถแปลงสถานการณ์ภาษาอังกฤษธรรมดาให้กลายเป็น...ได้ Selenium Java or Python เขียนโค้ดโดยใช้ contextClick() และ doubleClick() รวมถึงแนะนำตัวระบุตำแหน่งและการรอที่มีประสิทธิภาพ

สรุปโพสต์นี้ด้วย: