目录
第一章 Selenium核心原理
1.1 浏览器自动化演进史
1.2 架构设计解析
第二章 环境搭建(Python示例)
2.1 跨平台环境配置
2.2 浏览器驱动管理
第三章 元素定位深度解析
3.1 八大定位策略对比
3.2 动态元素处理方案
第四章 浏览器操作全解析
4.1 窗口与导航控制
4.2 弹窗与权限处理
4.3 文件交互操作
第五章 等待机制原理剖析
5.1 三种等待策略对比
5.2 自定义等待条件
第六章 高级技巧实战
6.1 页面滚动控制
6.2 执行JavaScript
6.3 Headless模式优化
第七章 测试框架设计
7.1 Page Object模式进阶
7.2 数据驱动测试
7.3 日志与报告系统
第八章 最佳实践与排错
8.1 常见异常处理
8.2 性能优化技巧
8.3 企业级应用方案
[测试脚本] ↔ [JSON Wire Protocol] ↔ [浏览器驱动] ↔ [真实浏览器]
# 使用国内镜像加速安装
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
# CSS定位最佳实践
driver.find_element(By.CSS_SELECTOR, "button.submit:not([disabled])")
# XPath高级用法
driver.find_element(By.XPATH, "//div[contains(@class, 'dynamic')][text()='确认']")
# 多窗口智能切换
main_window = driver.current_window_handle
for handle in driver.window_handles:
if handle != main_window:
driver.switch_to.window(handle)
break
# 处理SSL证书错误(Chrome示例)
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
# 显式等待最佳实践
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "dynamicElement"))
)
class element_has_css_class(object):
def __init__(self, locator, css_class):
self.locator = locator
self.css_class = css_class
def __call__(self, driver):
element = driver.find_element(*self.locator)
if self.css_class in element.get_attribute("class"):
return element
return False
# 滚动到元素可见
driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth'});", element)
# 获取网络性能数据
metrics = driver.execute_cdp_cmd('Performance.getMetrics', {})
options.add_argument("--headless=new") # Chrome 112+新特性
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920,1080")
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username = (By.ID, "username")
self.password = (By.ID, "password")
def login(self, user, pwd):
self.driver.find_element(*self.username).send_keys(user)
self.driver.find_element(*self.password).send_keys(pwd)