选择单选按钮并检查Box in Selenium

⚡ 智能摘要

选择单选按钮并检查Box in Selenium 本教程涵盖了使用 WebDriver 自动化两种最常用表单控件的技术。教程解释了如何使用 click() 和 isSelected() 方法切换单选按钮和复选框,并逐步演示了具体的操作步骤。 Java 代码,并分享脆弱定位器的故障排除技巧。

  • 🔘 单选按钮 Toggle: 使用 WebElement 的 click() 方法来选择单选按钮;选择另一个选项会自动取消选择前一个选项。
  • ☑️ 复选框 Toggle: 同一个 click() 方法可以切换复选框的显示和显示状态;调用两次该方法会将复选框恢复到其原始状态。
  • 状态核实: 调用 isSelected() 来确认当前的切换状态,并对选中的控件断言 TRUE,对未选中的控件断言 FALSE。
  • 🧪 工进 Java 计费示例: 整个程序驱动 Guru99 演示和 Facebook 持久登录复选框,用于演示这两个流程。
  • 🛠️ 可靠的定位器: 当 id 动态变化时,切换到 By.xpath() 或 By.cssSelector(),并添加显式等待以防止 NoSuchElementException。

选择单选按钮并检查Box in Selenium

单选按钮 Selenium

单选按钮通过以下方式切换开启/关闭: click() 方法,就像任何其他 WebElement 一样 Selenium由于单选按钮组中一次只能激活一个选项,因此单击第二个选项会自动取消选择第一个选项。

运用 https://demo.guru99.com/test/radio.html 作为练习页面,请注意: radio1.click() 选择“选项1”单选按钮。呼叫 radio2.click() 然后选择“选项2”,同时保持“选项1”未选择。

单选按钮选择 Guru99 演示页面

如何选中复选框 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 或 Chrome 中的“检查元素”功能再次检查您的定位器。
  2. 确认代码中使用的值与页面上元素的当前值一致。
  3. 有些元素具有动态属性,类似于您在以下情况下可能看到的情况: 在下拉菜单中选择一个 Selenium 网络驱动程序在这种情况下,最好选择 By.xpath() or By.cssSelector()它们更可靠,但稍微复杂一些。
  4. 有时问题出在时机上——WebDriver 在页面加载完成之前就执行了你的代码。
  5. 添加等待时间 findElement() 使用隐式或显式等待,给元素时间进行渲染。

常见问题

调用同一个复选框 WebElement 的 click() 方法即可将其取消选中。没有专门的取消选中方法。如果您只想在复选框当前选中时取消选中,请在点击之前使用 isSelected() 方法,这样可以确保测试逻辑的安全。

当复选框或单选按钮被选中时,`isSelected()` 返回 true。当元素可以接收用户输入时,`isEnabled()` 返回 true。它们用途不同:`isSelected()` 用于验证状态,而 `isEnabled()` 用于验证元素是否接受交互。

使用 `findElements()` 函数,并配合类似 `By.xpath(“//input[@type='checkbox']”)` 的定位器,获取所有复选框 WebElement,遍历列表,检查 `isSelected()` 属性,然后仅对未选中的复选框调用 `click()` 函数。这样可以避免意外取消选中已选中的复选框。

AI助手能够生成定位策略,在ID更改时自动修复选择器,并为单选按钮和复选框状态提供断言建议。AI工具还能根据屏幕录像自动生成端到端的表单填写测试,从而减少手动编码和测试维护工作量。

是的。人工智能驱动的 Selenium 这些工具会分析 DOM,学习稳定的属性,并在版本更新时 ID 发生变化时重写 XPath 或 CSS 选择器。这种自我修复功能确保表单控件测试在每次 UI 调整后无需手动更新定位器即可通过。

总结一下这篇文章: