เลือกปุ่มตัวเลือกและตรวจสอบBox in Selenium

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

เลือกปุ่มตัวเลือกและตรวจสอบBox in Selenium บทช่วยสอนนี้ครอบคลุมเทคนิค WebDriver สำหรับการทำงานอัตโนมัติของตัวควบคุมฟอร์มที่ใช้กันทั่วไปสองตัว โดยจะอธิบายวิธีการใช้เมธอด click() และ isSelected() เพื่อสลับสถานะของปุ่มวิทยุและช่องทำเครื่องหมาย รวมถึงขั้นตอนการทำงานโดยละเอียด Java โค้ด และแบ่งปันเคล็ดลับการแก้ไขปัญหาสำหรับตัวระบุตำแหน่งที่เปราะบาง

  • 🔘 ปุ่ม Toggle: ใช้เมธอด click() บน WebElement เพื่อเลือกปุ่มตัวเลือก (radio button) การเลือกตัวเลือกอื่นจะยกเลิกการเลือกตัวเลือกก่อนหน้าโดยอัตโนมัติ
  • ☑️ ช่องทำเครื่องหมาย Toggle: เมธอด click() เดียวกันนี้ใช้สำหรับสลับสถานะของช่องทำเครื่องหมายเปิดและปิด การเรียกใช้เมธอดนี้สองครั้งจะทำให้ช่องทำเครื่องหมายกลับสู่สถานะเดิม
  • การตรวจสอบสถานะ: เรียกฟังก์ชัน isSelected() เพื่อยืนยันสถานะการสลับปัจจุบัน โดยกำหนดค่า TRUE สำหรับตัวควบคุมที่ถูกเลือก และ FALSE สำหรับตัวควบคุมที่ไม่ได้เลือก
  • 🧪 การทำงาน Java ตัวอย่าง: โปรแกรมทั้งหมดขับเคลื่อน Guruตัวอย่าง 99 รายการและช่องทำเครื่องหมาย "เข้าสู่ระบบค้างไว้" ของ Facebook เพื่อสาธิตขั้นตอนทั้งสองแบบ
  • 🛠️ บริการค้นหาตำแหน่งที่เชื่อถือได้: เปลี่ยนไปใช้ By.xpath() หรือ By.cssSelector() เมื่อ id เปลี่ยนแปลงแบบไดนามิก และเพิ่มการรออย่างชัดเจนเพื่อป้องกัน NoSuchElementException

เลือกปุ่มตัวเลือกและตรวจสอบBox in Selenium

ปุ่มวิทยุเข้า Selenium

ปุ่มวิทยุจะถูกเปิดใช้งานโดยใช้ click() วิธีการนี้เหมือนกับ WebElement อื่นๆ ทั่วไป Seleniumเนื่องจากในกลุ่มตัวเลือกแบบวิทยุสามารถเลือกใช้งานได้เพียงตัวเลือกเดียวในแต่ละครั้ง การคลิกตัวเลือกที่สองจะยกเลิกการเลือกตัวเลือกแรกโดยอัตโนมัติ

การใช้ https://demo.guru99.com/test/radio.html โปรดทราบว่า สำหรับหน้าฝึกฝนนี้ radio1.click() เลือกปุ่มตัวเลือก “Option1” กำลังโทรออก radio2.click() จากนั้นเลือก “ตัวเลือกที่ 2” โดยปล่อยให้ “ตัวเลือกที่ 1” ไม่ถูกเลือก

การเลือกปุ่มวิทยุบน Guruหน้าสาธิต 99

วิธีการเลือกช่องทำเครื่องหมายใน Selenium

Togglการเปิดหรือปิดช่องทำเครื่องหมายก็ทำได้โดยใช้เช่นกัน click() วิธีการนี้ โค้ดด้านล่างจะคลิกช่องทำเครื่องหมาย "เข้าสู่ระบบค้างไว้" ของ Facebook สองครั้ง และจะแสดงค่า TRUE เมื่อช่องทำเครื่องหมายถูกเปิดใช้งาน และค่า FALSE เมื่อช่องทำเครื่องหมายถูกปิดใช้งาน

Selenium คลิกที่ช่องทำเครื่องหมาย "เข้าสู่ระบบค้างไว้" ของ Facebook

เอาต์พุตคอนโซลแสดงสถานะการสลับช่องทำเครื่องหมาย

การขอ isSelected() เมธอดนี้ใช้เพื่อตรวจสอบว่าช่องทำเครื่องหมายถูกเปิดหรือปิดอยู่ ซึ่งเป็นการตรวจสอบที่สำคัญเมื่อตรวจสอบสถานะของฟอร์มในกรณีทดสอบ

นี่คือตัวอย่างหน้าเว็บอีกหน้าหนึ่ง: https://demo.guru99.com/test/radio.html.

Selenium โค้ดตรวจสอบสถานะของช่องทำเครื่องหมายด้วย isSelected()

สมบูรณ์ Code ตัวอย่าง

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

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // Declaration and instantiation of objects and variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get("https://demo.guru99.com/test/radio.html");
        WebElement radio1 = driver.findElement(By.id("vfb-7-1"));
        WebElement radio2 = driver.findElement(By.id("vfb-7-2"));

        // Radio Button 1 is selected
        radio1.click();
        System.out.println("Radio Button Option 1 Selected");

        // Radio Button 1 is de-selected and Radio Button 2 is selected
        radio2.click();
        System.out.println("Radio Button Option 2 Selected");

        // Selecting Checkbox
        WebElement option1 = driver.findElement(By.id("vfb-6-0"));

        // This will toggle the checkbox
        option1.click();

        // Check whether the checkbox is toggled on
        if (option1.isSelected()) {
            System.out.println("Checkbox is Toggled On");
        } else {
            System.out.println("Checkbox is Toggled Off");
        }

        // Selecting a Checkbox and using the isSelected method
        driver.get("https://demo.guru99.com/test/facebook.html");
        WebElement chkFBPersist = driver.findElement(By.id("persist_box"));
        for (int i = 0; i < 2; i++) {
            chkFBPersist.click();
            System.out.println("Facebook Persists Checkbox Status is - " + chkFBPersist.isSelected());
        }
        // driver.close();
    }
}

การแก้ไขปัญหา

หากคุณพบ NoSuchElementException ข้อความ "กำลังค้นหาองค์ประกอบ" หมายความว่าองค์ประกอบนั้นไม่มีอยู่ ณ ขณะที่ WebDriver เข้าถึงหน้าเว็บ ใช้รายการตรวจสอบด้านล่างเพื่อกู้คืนได้อย่างรวดเร็ว:

  1. ตรวจสอบตำแหน่งที่ตั้งของคุณอีกครั้งโดยใช้ FirePath หรือ Inspect Element ใน Chrome
  2. ตรวจสอบให้แน่ใจว่าค่าที่คุณใช้ในโค้ดตรงกับค่าปัจจุบันขององค์ประกอบบนหน้าเว็บ
  3. องค์ประกอบบางอย่างมีคุณสมบัติแบบไดนามิก คล้ายกับสิ่งที่คุณอาจเห็นเมื่อคุณ เลือกเมนูแบบดรอปดาวน์ใน Selenium ไดรเวอร์เว็บในกรณีเหล่านั้น ควรเลือกวิธีอื่น By.xpath() or By.cssSelector()ซึ่งมีความน่าเชื่อถือมากกว่า แต่มีความซับซ้อนกว่าเล็กน้อย
  4. บางครั้งปัญหาอยู่ที่จังหวะเวลา — WebDriver ประมวลผลโค้ดของคุณก่อนที่หน้าเว็บจะโหลดเสร็จสมบูรณ์
  5. เพิ่มการรอสักครู่ก่อน findElement() โดยใช้การรอแบบโดยปริยายหรือโดยชัดแจ้งเพื่อให้องค์ประกอบมีเวลาในการแสดงผล

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

เรียกใช้เมธอด click() บน WebElement ของช่องทำเครื่องหมายเดียวกันเพื่อปิดการเลือก ไม่มีเมธอด deselect โดยเฉพาะ หากต้องการยกเลิกการเลือกเฉพาะเมื่อช่องทำเครื่องหมายถูกเลือกอยู่ ให้ใช้ isSelected() ก่อนคลิก ซึ่งจะช่วยให้ตรรกะการทดสอบปลอดภัย

เมธอด `isSelected()` จะคืนค่า `true` เมื่อช่องทำเครื่องหมายหรือปุ่มวิทยุถูกเลือก เมธอด `isEnabled()` จะคืนค่า `true` เมื่อองค์ประกอบนั้นสามารถรับอินพุตจากผู้ใช้ได้ ฟังก์ชันทั้งสองมีจุดประสงค์ที่แตกต่างกัน: `isSelected()` ตรวจสอบสถานะ ในขณะที่ `isEnabled()` ตรวจสอบว่าองค์ประกอบนั้นยอมรับการโต้ตอบหรือไม่

ใช้ findElements() ร่วมกับตัวระบุตำแหน่ง เช่น By.xpath(“//input[@type='checkbox']”) เพื่อรับ WebElement ที่เป็นช่องทำเครื่องหมายทั้งหมด วนลูปผ่านรายการ ตรวจสอบ isSelected() และเรียก click() เฉพาะกับช่องทำเครื่องหมายที่ยังไม่ได้เลือกเท่านั้น วิธีนี้จะช่วยหลีกเลี่ยงการยกเลิกการเลือกช่องทำเครื่องหมายที่เลือกไว้แล้วโดยไม่ตั้งใจ

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

ใช่แล้ว ขับเคลื่อนด้วย AI Selenium เครื่องมือเหล่านี้จะวิเคราะห์ DOM เรียนรู้แอตทริบิวต์ที่เสถียร และเขียน XPath หรือตัวเลือก CSS ใหม่เมื่อ ID เปลี่ยนแปลงระหว่างเวอร์ชัน ความสามารถในการแก้ไขตัวเองนี้ช่วยให้การทดสอบการควบคุมฟอร์มผ่านได้โดยไม่ต้องอัปเดตตัวระบุตำแหน่งด้วยตนเองหลังจากการปรับแต่ง UI ทุกครั้ง

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