selenium对每种前端控件的操作,python举例
以下通过豆包整理,仅做记录
Selenium 对前端常用控件的操作方式各有特点,以下是针对不同类型控件的典型操作方法(以 Python 为例):
1. 输入类控件
<input>
(文本 / 密码 / 数字等输入框)
- 操作:输入文本、清空内容、获取值
python
运行
# 定位元素
input_element = driver.find_element(By.ID, "username")# 输入文本
input_element.send_keys("test_user")# 清空内容
input_element.clear()# 获取当前值
value = input_element.get_attribute("value")
<textarea>
(多行文本框)
- 操作:输入多行文本、清空、获取内容
python
运行
textarea = driver.find_element(By.NAME, "description")# 输入多行文本
textarea.send_keys("第一行文本\n第二行文本")# 清空
textarea.clear()# 获取内容
content = textarea.get_attribute("value")
2. 选择类控件
<select>
+ <option>
(下拉选择框)
- 操作:选择选项(通过索引、可见文本、值)
python
运行
from selenium.webdriver.support.ui import Selectselect_element = Select(driver.find_element(By.ID, "city"))# 通过索引选择(索引从0开始)
select_element.select_by_index(2)# 通过可见文本选择
select_element.select_by_visible_text("北京")# 通过option的value属性选择
select_element.select_by_value("shanghai")# 取消所有选择(仅适用于multiple=True的下拉框)
select_element.deselect_all()# 获取所有选中的选项
selected_options = select_element.all_selected_options
<input type="checkbox">
(复选框)
- 操作:勾选、取消勾选、判断是否选中
python
运行
checkbox = driver.find_element(By.NAME, "agree")# 勾选(如果未选中)
if not checkbox.is_selected():checkbox.click()# 取消勾选(如果已选中)
if checkbox.is_selected():checkbox.click()# 判断是否选中
is_checked = checkbox.is_selected()
<input type="radio">
(单选框)
- 操作:选择指定选项
python
运行
# 选择value为"male"的单选框
radio_male = driver.find_element(By.CSS_SELECTOR, "input[value='male']")
radio_male.click()
3. 按钮类控件
<button>
或 <input type="submit">
- 操作:点击按钮
python
运行
# 定位提交按钮并点击
submit_btn = driver.find_element(By.ID, "submit-btn")
submit_btn.click()# 有时需要处理点击后页面加载,可配合等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待按钮可点击后再点击
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "submit-btn"))
).click()
4. 媒体类控件
<img>
(图片)
- 操作:获取图片信息、点击图片(如果有链接)
python
运行
image = driver.find_element(By.CSS_SELECTOR, "img.logo")# 获取图片URL
image_url = image.get_attribute("src")# 获取替代文本
alt_text = image.get_attribute("alt")# 点击图片(如果图片包裹在<a>标签中或有点击事件)
image.click()
<video>
(视频)
- 操作:播放、暂停(通过 JavaScript 执行)
python
运行
video = driver.find_element(By.TAG_NAME, "video")# 播放视频
driver.execute_script("arguments[0].play()", video)# 暂停视频
driver.execute_script("arguments[0].pause()", video)# 获取视频时长
duration = driver.execute_script("return arguments[0].duration", video)
5. 容器与链接类
<div>
/<span>
(容器)
- 操作:获取文本、点击(如果有交互)
python
运行
div_element = driver.find_element(By.CLASS_NAME, "info-box")# 获取文本内容
text = div_element.text# 点击容器(如果绑定了点击事件)
div_element.click()
<a>
(超链接)
- 操作:点击跳转、获取链接地址
python
运行
link = driver.find_element(By.LINK_TEXT, "帮助中心")# 点击链接
link.click()# 获取链接地址
href = link.get_attribute("href")
6. 表单类
<form>
(表单)
- 操作:提交表单、重置表单
python
运行
form = driver.find_element(By.ID, "login-form")# 提交表单(等价于点击提交按钮)
form.submit()# 重置表单(清空输入内容)
form.reset()
7. 文件上传控件
<input type="file">
- 操作:上传本地文件(需传入文件绝对路径)
python
运行
file_input = driver.find_element(By.ID, "avatar-upload")# 上传文件(直接传入本地文件路径)
file_input.send_keys("/Users/test/avatar.jpg")
关键注意事项
- 元素交互前需确保可见 / 可点击:使用显式等待(
WebDriverWait
)避免因元素未加载导致的错误。 - 处理动态元素:若元素属性动态变化,优先使用稳定的定位方式(如
XPath
文本定位、层级定位)。 - 特殊控件处理:对于复杂控件(如日期选择器、自定义下拉框),可通过直接设置属性或执行 JavaScript 操作。
通过上述方法,可覆盖 Selenium 对绝大多数前端控件的基本操作,结合具体场景灵活组合即可实现复杂自动化流程。