Selenium 自动化 —— 高级交互(click、sendKeys、submit、clear、select)

更多关于Selenium的知识请访问CSND论坛“兰亭序咖啡”的专栏:专栏《Selenium 从入门到精通》

​​


1. 前言

这是我的《Selenium从入门到精通》专栏的第11篇文章,前面花了很多时间在元素的定位上。不管是爬虫和自动化,找到元素后,我们通常还会需要和这么网页元素做一些交互,比如:

  • 点击“注册”按钮
  • 在“账号文本框”中输入账号
  • 清空文本内容
  • 提交“注册表单”
  • 在“证件类型”下拉列表中选择身份证

Selenium WebDriver提供了一系列简洁而强大的API,可以通过它们直接操纵页面上的各类元素,从而模拟用户交互行为。和上面的需求基本对应:

  • click 模拟用户点击元素的动作
  • send keys 向可输入的文本元素发送文本数据
  • clear 清除文本元素中的内容
  • submit 模拟提交表单操作
  • select 处理下拉选择框

本文将系统性地介绍Selenium中对Web元素进行操作的

<think>我们正在寻找使用Python和Selenium进行自动化测试的代码示例。根据提供的引用,我们可以提取关键信息:引用[3]中提供了一个简单的导入语句和基本的设置,但没有完整的示例。引用[4]提到了使用PyUnit(即unittest)框架,并提到了TestRunner和TextTestRunner,说明我们可以结合unittest框架来组织测试用例。引用[5]中有一个不完整的代码片段,其中包含一个字典,但不是一个完整的示例。因此,我们可以结合引用内容,构建一个简单的示例,包括以下步骤:1.导入必要的模块(如selenium,unittest等)2.编写一个测试类,继承unittest.TestCase3.设置和关闭浏览器4.编写一个简单的测试方法,比如打开一个网页,定位元素并执行一些操作注意:由于引用[5]中有一个登录的例子,我们可以模拟一个登录测试(尽管引用的代码不完整,但我们可以根据经验补充)。我们将提供一个简单的示例,使用unittest框架和SeleniumWebDriver来测试一个登录页面。示例代码:假设我们要测试一个登录功能,网址为:http://example.com/login(注意:这是一个示例网址,实际测试时需要替换)我们将模拟以下步骤:-打开登录页面-输入用户名和密码-点击登录按钮-验证登录后的页面是否包含某个元素(如“注销”链接)注意:为了运行此代码,需要安装selenium和对应的浏览器驱动(如ChromeDriver)。由于引用中提到了显式等待,我们将使用WebDriverWait来等待元素出现。代码示例:"""</think> 以下是一个基于Python和Selenium的UI自动化测试基础框架及示例代码。该框架包含常见的浏览器交互操作: ```python # 基础UI自动化测试框架 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import unittest class TestLogin(unittest.TestCase): def setUp(self): # 初始化Chrome浏览器驱动 self.driver = webdriver.Chrome() self.driver.maximize_window() def test_valid_login(self): """测试有效登录""" # 访问目标网站 self.driver.get("https://example.com/login") # 显式等待元素加载 wait = WebDriverWait(self.driver, 10) # 定位元素并输入 username = wait.until(EC.presence_of_element_located((By.ID, "username"))) username.send_keys("admin@example.com") password = self.driver.find_element(By.ID, "password") password.send_keys("password123") # 点击登录按钮 submit = self.driver.find_element(By.XPATH, "//button[@type='submit']") submit.click() # 验证登录成功 success_msg = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "welcome-message"))) self.assertIn("Welcome", success_msg.text) def tearDown(self): # 关闭浏览器 self.driver.quit() if __name__ == "__main__": unittest.main() ``` ### 核心组件说明: 1. **浏览器初始化**:通过`webdriver.Chrome()`启动Chrome 2. **元素定位方式**: - `By.ID`: 使用元素ID定位 - `By.XPATH`: 使用XPath表达式定位 - `By.CLASS_NAME`: 使用类名定位 3. **等待机制**:`WebDriverWait`配合预期条件确保元素加载完成 4. **页面交互**: - `send_keys()`: 输入文本 - `click()`: 点击元素 - `clear()`: 清空输入框(未展示) 5. **断言验证**:通过`unittest`断言验证结果 ### 更多常用操作示例: ```python # 下拉菜单选择 from selenium.webdriver.support.select import Select dropdown = Select(driver.find_element(By.ID, "country")) dropdown.select_by_visible_text("China") # 文件上传 file_input = driver.find_element(By.ID, "file-upload") file_input.send_keys("/path/to/testfile.txt") # 处理弹窗 alert = driver.switch_to.alert alert.accept() # 确认弹窗 # alert.dismiss() # 取消弹窗 # 页面截图 driver.save_screenshot("login_success.png") ``` **最佳实践建议**: 1. 使用Page Object模式封装页面元素 2. 配置`conftest.py`管理测试环境 3. 使用`pytest`框架增强测试组织能力 4. 结合Allure等工具生成测试报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值