Web自动化测试从零到一Selenium元素定位、等待机制、鼠标键盘操作全攻略手工点点点效率太低回归测试每次都要重复执行Web自动化测试正是解决这些痛点的利器。本文带你系统掌握Selenium WebDriver的核心知识浏览器启动、8大元素定位、隐式/显式等待、表单/鼠标/键盘操作、JavaScript执行等目录Web自动化测试从零到一Selenium元素定位、等待机制、鼠标键盘操作全攻略1. ⭐ 写在前头行业趋势Playwright微软出品2. Web自动化测试概述常用工具3. Selenium WebDriver基础引入SeleniumPython示例4. 元素定位方法返回 WebElement 对象5. ⏱️ 元素等待机制隐式等待显式等待常用等待条件6. ️ 浏览器操作窗口管理页面滚动执行JavaScript浏览器导航表单操作下拉菜单处理Select类键盘操作Keys类鼠标操作ActionChains类元素状态判断7. ⚡ 执行JavaScript弹窗处理8. 总结与实践 系列内容✨ 写在最后1. ⭐ 写在前头行业趋势虽然Selenium是现在主流必学但2026年的行业现状——Playwright的采用率已经超过了Selenium加上AI辅助测试五花八门让基础薄弱的可以快速上手。Playwright微软出品无需手动配置驱动自带浏览器驱动不用再管 ChromeDriver、GeckoDriver自动智能等待自动处理异步加载、弹窗、iframe无需写WebDriverWait执行更快速度比 Selenium 快 3~5 倍稳定性更高多场景开箱即用多标签、多浏览器、移动端模拟、视频录制、网络拦截一键搞定对前端 JS 更友好原生支持page.evaluate()执行复杂 JS可直接监听网络、控制浏览器底层行为语法更贴近前端开发习惯2. Web自动化测试概述Web自动化测试 是通过模拟用户操作对Web应用程序进行自动化验证的过程主要目的提高测试效率、保证回归测试质量。常用工具官网链接Selenium目前最常见的开源Web自动化测试框架CypressPlaywright 全栈轻量级开发新星3. Selenium WebDriver基础WebDriver架构通过浏览器驱动与不同浏览器进行通信支持 Chrome、Firefox、Edge 等主流浏览器。浏览器启动与管理通过WebDriver类启动和管理浏览器会话可设置浏览器窗口大小、位置等参数。页面导航get()方法打开指定 URLforward()、back()、refresh()方法实现页面前进、后退和刷新引入SeleniumPython示例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 from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select4. 元素定位方法返回 WebElement 对象Selenium 提供8种基本元素定位方式通过By类实现driver webdriver.Chrome() driver.find_element(By.ID, id值) # id定位 driver.find_element(By.NAME, name值) # name定位 driver.find_element(By.CLASS_NAME, class值) # class值定位 driver.find_element(By.CSS_SELECTOR, css选择器) # css选择器定位 driver.find_element(By.TAG_NAME, 标签名) # 标签名定位 driver.find_element(By.LINK_TEXT, 链接文本) # 链接文本定位 driver.find_element(By.PARTIAL_LINK_TEXT, 部分链接文本) # 部分链接文本定位 driver.find_element(By.XPATH, xpath表达式) # [XPath]定位提示优先使用 ID、NAME 等稳定属性XPATH灵活但维护成本较高。5. ⏱️ 元素等待机制隐式等待设置全局等待时间在查找元素时如果未立即找到会持续等待直到超时。driver.implicitly_wait(10) # 等待10秒显式等待针对特定元素设置等待条件更加灵活精准。from selenium.webdriver.support import expected_conditions as EC WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, element_id)) )常用等待条件条件说明element_to_be_clickable元素可点击presence_of_element_located元素存在于DOMvisibility_of_element_located元素可见element_to_be_selected元素被选中6. ️ 浏览器操作窗口管理driver.current_window_handle # 获取当前窗口句柄 driver.switch_to.window(handle) # 切换窗口 driver.maximize_window() # 最大化窗口页面滚动执行JavaScriptdriver.execute_script(window.scrollTo(0, document.body.scrollHeight);)浏览器导航driver.get(https://www.baidu.com) # 访问页面 title driver.title # 获取页面标题 url driver.current_url # 获取当前URL driver.forward() # 前进 driver.back() # 后退 driver.refresh() # 刷新表单操作element.clear() # 清空输入框 element.send_keys(文本内容) # 输入文本 element.submit() # 直接提交表单 element.send_keys(Keys.ENTER) # 模拟回车键下拉菜单处理Select类from selenium.webdriver.support.ui import Select select Select(driver.find_element(By.ID, dropdown)) select.select_by_index(1) # 通过索引选择 select.select_by_value(value) # 通过值选择 select.select_by_visible_text(文本) # 通过可见文本选择键盘操作Keys类element.send_keys(Keys.CONTROL a) # 全选 element.send_keys(Keys.TAB) # 切换焦点鼠标操作ActionChains类from selenium.webdriver.common.action_chains import ActionChains actions ActionChains(driver) actions.move_to_element(element).perform() # 鼠标悬停 actions.double_click(element).perform() # 双击 actions.context_click(element).perform() # 右键点击 actions.drag_and_drop(source, target).perform() # 拖放元素状态判断方法说明element.is_displayed()是否可见element.is_selected()是否被选中用于单选/复选框element.is_enabled()是否可用find_elements(By.xxx, value)列表长度判断7. ⚡ 执行JavaScriptdriver.execute_script(arguments[0].click();, element) # 通过JS点击元素 driver.execute_script(return document.title;) # 获取页面标弹窗处理alert driver.switch_to.alert # 获取弹窗 alert.accept() # 确认 alert.dismiss() # 取消8. 总结与实践知识点关键要点元素定位优先ID/NAMEXPATH作为补充等待机制隐式等待设置全局超时显式等待针对特定条件表单操作clear()、send_keys()、Select类处理下拉框鼠标键盘ActionChains Keys 模拟复杂交互JavaScript用于滚动、点击隐藏元素等原生方法无法完成的场景案例需求1、打开在百度搜索主页https://www.baidu.com/2、鼠标指向设置按钮选择高级搜索3、在高级搜索上的文档格式选项中选择PDF在搜索结果包含全部关键词中输入“测试”点击高级搜索按钮代码实现 系列内容系列文章链接持续更新中上一篇 白盒测试下一篇 接口测试python版还有更多…关注我第一时间获取更新✨ 写在最后如果本文对你有帮助欢迎点赞、收藏、评论转载引用请私信作者本人(╹ڡ╹ )