在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自动化测试脚本。希望本文能对你有所帮助!