掌握checkbox和radiobutton的定位技巧:从零开始的Web自动化测试之旅

在Web自动化测试中,我们经常需要与各种表单元素进行交互,其中最常见的就是复选框(checkbox)和单选按钮(radiobutton)。本文将详细介绍如何使用Python的Selenium库来定位和操作这两种常见的表单元素。

一、checkbox的定位与操作

复选框是一种允许用户选择多个选项的表单元素。在HTML中,复选框使用<input>标签表示,其类型为checkbox。我们可以使用Selenium的find_element方法结合CSS选择器或XPath表达式来定位复选框。
示例html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>掌握checkbox和radiobutton的定位技巧</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        form {
            width: 300px;
            margin: 0 auto;
        }
        label {
            display: block;
            margin-bottom: 10px;
        }
        input[type="submit"] {
            background-color: #4CAF50;
            color: white;
            padding: 10px 20px;
            border: none;
            cursor: pointer;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            margin: 4px 2px;
            transition-duration: 0.4s;
        }
        input[type="submit"]:hover {
            background-color: #45a049;
        }
    </style>
</head>
<body>
<form action="javascript:alert('hello')">
    swimming: <input type="checkbox" name="swimming" id="swimming" value="swimming"><br>
    reading: <input type="checkbox" name="reading" id="reading" value="reading"><br>

<hr>
    gender: <label><input type="radio" name="gender"  value="male">male</label>
            <label><input type="radio" name="gender"  value="female">female</label><br>


<input type="submit" value="submit" id="submit">
</form>
</body>
</html>

以下是一个示例代码:

```python
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

class CheckboxDemo:
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get("https://example.com/form")
        sleep(2)

    def test_checkbox(self):
        checkbox1 = self.driver.find_element(By.ID, "checkbox1")
        checkbox2 = self.driver.find_element(By.ID, "checkbox2")

        if not checkbox1.is_selected():
            checkbox1.click()
        sleep(1)

        if not checkbox2.is_selected():
            checkbox2.click()
        sleep(1)

        checkbox1.click()
        sleep(1)

        self.driver.quit()

if __name__ == "__main__":
    demo = CheckboxDemo()
    demo.test_checkbox()

在这个示例中,我们首先导入了所需的库,并创建了一个名为CheckboxDemo的类。在类的构造函数中,我们初始化了一个Chrome浏览器实例,并打开了一个包含复选框的网页。然后,我们定义了一个名为test_checkbox的方法,用于定位和操作复选框。

test_checkbox方法中,我们首先使用find_element方法和CSS选择器定位到了两个复选框。接着,我们使用is_selected方法检查复选框是否已经被选中,如果没有被选中,则使用click方法进行点击操作。最后,我们再次点击第一个复选框以取消其选中状态。

二、radiobutton的定位与操作

单选按钮是一种只能选择一个选项的表单元素。在HTML中,单选按钮也使用<input>标签表示,其类型为radio。我们可以使用与复选框相同的方法来定位和操作单选按钮。

以下是一个示例代码:

#!/usr/bin/python3
# coding=utf-8
"""
@author: Jeffky
@file: demo7.py
@time: 2024-6-14 15:31
"""
import os

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By


class TestCase(object):

    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        path = os.path.dirname(os.path.abspath(__file__))
        file_path = 'file:///' + path + os.sep + 'forms2.html'
        self.driver.get(file_path)
        sleep(2)

    def test_checkbox(self):
        swimming = self.driver.find_element(By.ID, 'swimming')
        if not swimming.is_selected():
            swimming.click()
        sleep(3)
        reading = self.driver.find_element(By.ID, 'reading')
        if not reading.is_selected():
            reading.click()
        sleep(3)
        swimming.click()
        sleep(3)
        self.driver.quit()

    def test_radio(self):
        lst = self.driver.find_elements(By.NAME,'gender')
        lst[0].click()
        sleep(3)
        lst[1].click()

if __name__ == '__main__':
    case = TestCase()
    # case.test_checkbox()
    case.test_radio()

在这个示例中,我们同样首先导入了所需的库,并创建了一个名为TestCase的类。在类的构造函数中,我们初始化了一个Chrome浏览器实例,并打开了一个包含单选按钮的网页。然后,我们定义了一个名为test_radiobutton的方法,用于定位和操作单选按钮。

test_radiobutton方法中,我们首先使用find_element方法和选择器定位到了两个单选按钮。接着,我们直接使用click方法对单选按钮进行点击操作。注意,由于单选按钮的特性,我们不需要检查它们是否已经被选中,直接点击即可。

三、总结

本文详细介绍了如何使用Python的Selenium库来定位和操作复选框和单选按钮这两种常见的表单元素。通过掌握这些技巧,你可以轻松地编写出高效、稳定的Web自动化测试脚本。希望本文能对你有所帮助!

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 18:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 18:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 18:12:01       82 阅读
  4. Python语言-面向对象

    2024-06-14 18:12:01       91 阅读

热门阅读

  1. junit mockito Dao层

    2024-06-14 18:12:01       32 阅读
  2. 如何对Spring管理bean进行增强

    2024-06-14 18:12:01       36 阅读
  3. cloud compare编译

    2024-06-14 18:12:01       25 阅读
  4. Django Form 组件

    2024-06-14 18:12:01       33 阅读
  5. Scala 入门指南:从零开始的大数据开发

    2024-06-14 18:12:01       30 阅读
  6. Scala入门教程

    2024-06-14 18:12:01       34 阅读
  7. 深度学习 - RNN训练过程推演

    2024-06-14 18:12:01       22 阅读
  8. 构建实时搜索与推荐系统:Elasticsearch与业务结合

    2024-06-14 18:12:01       35 阅读
  9. pytest request.session 保持登录状态

    2024-06-14 18:12:01       27 阅读
  10. 0074__Microsoft Typography documentation

    2024-06-14 18:12:01       30 阅读
  11. 1111111222

    2024-06-14 18:12:01       29 阅读
  12. xml数据解析

    2024-06-14 18:12:01       27 阅读