千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT问答库  >  零基础学软件测试

2026年领先自动化测试入门:Selenium WebDriver 7天从零到跑通第一个脚本

发布:cli 2026-05-09 16:07

推荐答案

01 环境搭建:90%的新手死在这一步

传统搭建 Selenium 环境的流程是这样的:装 Python → 装 Selenium → 查 Chrome 版本 → 下载对应 ChromeDriver → 配置环境变量 → 报错 → 换版本 → 再报错。

**Before**:手动下载 ChromeDriver,版本和浏览器不匹配,`SessionNotCreatedException` 刷屏。

**After**:Selenium 4.6+ 内置 `Selenium Manager`,自动下载和管理驱动,零配置启动。

```python

from selenium import webdriver

# 就这一行,驱动自动管理

driver = webdriver.Chrome()

driver.get("https://www.baidu.com")

print(driver.title)

driver.quit()

```

> 告别手动下载驱动的时代,把时间花在写测试上,不是花在配环境上。

安装只需要两条命令:

```bash

pip install selenium

pip install webdriver-manager # 备用方案

```

关键点:Python 版本选 3.10 以上,Selenium 选 4.20 以上。低版本缺少自动管理能力,会给自己挖坑。

---

02 八大核心操作:掌握这8个,覆盖80%的测试场景

Selenium 的本质是什么?就是用代码操控浏览器。它的所有操作归结为8类:

| 操作类型 | 方法 | 典型场景 |

|---------|------|---------|

| 元素定位 | `find_element` | 点击按钮、输入文本 |

| 文本输入 | `send_keys` | 登录表单、搜索框 |

| 点击操作 | `click` | 提交按钮、导航链接 |

| 获取信息 | `text` / `get_attribute` | 验证页面内容 |

| 等待机制 | `WebDriverWait` | 异步加载元素 |

| 切换窗口 | `switch_to.window` | 多标签页操作 |

| 执行JS | `execute_script` | 滚动页面、处理弹窗 |

| 截图保存 | `save_screenshot` | 测试失败的证据 |

**Before**:用 `time.sleep(5)` 硬等,测试慢得像蜗牛,还经常等不到位。

**After**:用 `WebDriverWait` 显式等待,元素一出现立刻执行,平均提速3倍。

```python

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 显式等待:最多等10秒,元素出现即继续

element = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.ID, "kw"))

)

element.send_keys("Selenium教程")

```

> 等待不是浪费时间,等错了才是。

---

03 元素定位策略:从入门到精准打击

定位元素是 Selenium 测试的核心。8种定位方式,实战中真正常用的只有4种:

**优先级排序**:ID > CSS Selector > XPath > Class Name

```python

# 1. ID定位(最快最稳)

driver.find_element(By.ID, "username")

# 2. CSS选择器(灵活强大)

driver.find_element(By.CSS_SELECTOR, ".login-form input[type='text']")

# 3. XPath定位(万能但慢)

driver.find_element(By.XPATH, "//input[@placeholder='请输入用户名']")

# 4. 相对定位(Selenium 4 新特性,最优雅)

from selenium.webdriver.support.relative_locator import with_tag_name

password = driver.find_element(By.ID, "username").find_element(

with_tag_name("input").below(By.ID, "username")

)

```

**Before**:复制一整条 XPath,改一个字就挂,像玻璃做的。

**After**:用相对定位,元素关系变了也不怕,像橡皮做的。

实战建议:

- 开发配合加 ID 属性,测试效率翻倍

- 避免 `absolute XPath`(从 `/html/body/div[1]...` 开始的),页面结构一变全废

- 善用浏览器 F12 的 "Copy selector" 快速获取

> 定位元素不是写代码,是读页面的思维。看懂结构,一行搞定。

---

04 第一个完整测试脚本:百度搜索实战

把前面学的串起来,写一个完整的测试案例:

```python

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

def test_baidu_search():

# 初始化浏览器

driver = webdriver.Chrome()

driver.maximize_window()

try:

# 打开百度首页

driver.get("https://www.baidu.com")

# 定位搜索框,输入关键词

search_box = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.ID, "kw"))

)

search_box.send_keys("软件测试" + Keys.ENTER)

# 验证搜索结果

WebDriverWait(driver, 10).until(

EC.title_contains("软件测试")

)

# 获取结果数量

results = driver.find_elements(By.CSS_SELECTOR, ".result.c-container")

assert len(results) > 0, "搜索结果为空"

print(f"测试通过!找到 {len(results)} 条搜索结果")

finally:

driver.quit()

if __name__ == "__main__":

test_baidu_search()

```

**Before**:手动打开浏览器,输入关键词,肉眼检查结果,一次只能测一条。

**After**:脚本自动执行,断言自动判断,跑100条用例只需要按回车。

> 代码是测试的复利。今天写一行,明天省一小时。

---

05 常见坑与避坑指南

踩坑不可怕,可怕的是同一个坑踩两次。以下是新手最常遇到的5个问题:

**坑1**:`ElementNotInteractableException` — 元素被遮挡

```python

# 解决:用JS滚动到元素位置

driver.execute_script("arguments[0].scrollIntoView();", element)

```

**坑2**:`NoSuchElementException` — 元素还没加载出来

```python

# 解决:用显式等待,别用 time.sleep

WebDriverWait(driver, 10).until(EC.visibility_of(element))

```

**坑3**:弹窗处理不当导致脚本中断

```python

# 解决:切换到弹窗再操作

alert = driver.switch_to.alert

alert.accept() # 或 alert.dismiss()

```

**坑4**:iframe 里的元素定位不到

```python

# 解决:先切入 iframe

driver.switch_to.frame("iframe_name")

# 操作完毕后切回主文档

driver.switch_to.default_content()

```

**坑5**:Chrome 版本升级后脚本失效

```python

# 解决:升级 Selenium 到 4.6+,驱动自动匹配

pip install --upgrade selenium

```

> 经验不是用时间换的,是用错误堆出来的。每个报错信息都是通往正确的路标。

---

从环境搭建到脚本跑通,从元素定位到避坑指南。5个模块,覆盖了 Selenium 入门的全部核心知识。

下一步干什么?不要再看教程了。打开编辑器,对着你公司的项目,写第一个测试脚本。跑通的那一刻,你就已经超过了80%还在"准备学"的人。

**测试自动化不是终点,是起点。跑通第一个脚本的成就感,会推着你走完剩下的路。**

最新问答资讯

01 unity用什么编程语言?unity学习难度大吗

学习 unity 语言
6020 人关注

02 python容易学吗?学好python有什么好处?

学习 python 工作 培训
5389 人关注

03 html是什么语言?html学习难吗?

学习 html 语言 可以
5062 人关注

04 c语言难学吗?c语言学好要多久?

语言 技术 学习
4733 人关注

06 学好平面设计要多久?报速成班靠谱吗?

平面 设计 学习 时间
4238 人关注

相关问题

2026年领先自动化测试入门:Selenium WebDriver 7天从零到跑通第一个脚本

广州软件测试培训机构口碑排行榜:谁在性价比存疑?——千锋教育如何受到认可?

零基础学软件测试?这5个坑90%的人都踩过,我全替你试了_千锋教育

零基础学软件测试:这些基础知识不是门槛,是垫脚石

上海软件测试培训机构实地考察报告:千锋教育值不值得选?

软件测试学习笔记整理方法分享

测一测
你知道多少IT梗