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

ปุ่มวิทยุเข้า Selenium
ปุ่มวิทยุจะถูกเปิดใช้งานโดยใช้ click() วิธีการนี้เหมือนกับ WebElement อื่นๆ ทั่วไป Seleniumเนื่องจากในกลุ่มตัวเลือกแบบวิทยุสามารถเลือกใช้งานได้เพียงตัวเลือกเดียวในแต่ละครั้ง การคลิกตัวเลือกที่สองจะยกเลิกการเลือกตัวเลือกแรกโดยอัตโนมัติ
การใช้ https://demo.guru99.com/test/radio.html โปรดทราบว่า สำหรับหน้าฝึกฝนนี้ radio1.click() เลือกปุ่มตัวเลือก “Option1” กำลังโทรออก radio2.click() จากนั้นเลือก “ตัวเลือกที่ 2” โดยปล่อยให้ “ตัวเลือกที่ 1” ไม่ถูกเลือก
วิธีการเลือกช่องทำเครื่องหมายใน Selenium
Togglการเปิดหรือปิดช่องทำเครื่องหมายก็ทำได้โดยใช้เช่นกัน click() วิธีการนี้ โค้ดด้านล่างจะคลิกช่องทำเครื่องหมาย "เข้าสู่ระบบค้างไว้" ของ Facebook สองครั้ง และจะแสดงค่า TRUE เมื่อช่องทำเครื่องหมายถูกเปิดใช้งาน และค่า FALSE เมื่อช่องทำเครื่องหมายถูกปิดใช้งาน
การขอ isSelected() เมธอดนี้ใช้เพื่อตรวจสอบว่าช่องทำเครื่องหมายถูกเปิดหรือปิดอยู่ ซึ่งเป็นการตรวจสอบที่สำคัญเมื่อตรวจสอบสถานะของฟอร์มในกรณีทดสอบ
นี่คือตัวอย่างหน้าเว็บอีกหน้าหนึ่ง: https://demo.guru99.com/test/radio.html.
สมบูรณ์ 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 เข้าถึงหน้าเว็บ ใช้รายการตรวจสอบด้านล่างเพื่อกู้คืนได้อย่างรวดเร็ว:
- ตรวจสอบตำแหน่งที่ตั้งของคุณอีกครั้งโดยใช้ FirePath หรือ Inspect Element ใน Chrome
- ตรวจสอบให้แน่ใจว่าค่าที่คุณใช้ในโค้ดตรงกับค่าปัจจุบันขององค์ประกอบบนหน้าเว็บ
- องค์ประกอบบางอย่างมีคุณสมบัติแบบไดนามิก คล้ายกับสิ่งที่คุณอาจเห็นเมื่อคุณ เลือกเมนูแบบดรอปดาวน์ใน Selenium ไดรเวอร์เว็บในกรณีเหล่านั้น ควรเลือกวิธีอื่น
By.xpath()orBy.cssSelector()ซึ่งมีความน่าเชื่อถือมากกว่า แต่มีความซับซ้อนกว่าเล็กน้อย - บางครั้งปัญหาอยู่ที่จังหวะเวลา — WebDriver ประมวลผลโค้ดของคุณก่อนที่หน้าเว็บจะโหลดเสร็จสมบูรณ์
- เพิ่มการรอสักครู่ก่อน
findElement()โดยใช้การรอแบบโดยปริยายหรือโดยชัดแจ้งเพื่อให้องค์ประกอบมีเวลาในการแสดงผล




