简单的自动化场景(以 Chrome 浏览器 为例)

1. 准备测试脚本

以下是一个完整的 Python 示例脚本,功能是 打开 Chrome 浏览器,访问百度并搜索关键词:

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 1. 初始化 Chrome 浏览器驱动
driver = webdriver.Chrome()  # 确保 chromedriver 已加入 PATH,或指定路径:webdriver.Chrome(executable_path="chromedriver路径")

# 2. 打开百度首页
driver.get("https://www.baidu.com")
print("已打开百度首页")

# 3. 定位搜索框并输入关键词
search_box = driver.find_element(By.ID, "kw")  # 百度搜索框的HTML ID是"kw"
search_box.send_keys("Selenium自动化测试")
print("已输入搜索关键词")

# 4. 模拟按下回车键
search_box.send_keys(Keys.RETURN)
print("已触发搜索")

# 5. 等待3秒查看结果
time.sleep(3)

# 6. 关闭浏览器
driver.quit()
print("测试完成,浏览器已关闭")
复制代码
 

2. 运行步骤

  1. 确保环境正确:

    • Chrome 浏览器已安装(如版本 109)。

    • chromedriver 版本与 Chrome 匹配(参考之前回答的版本建议)。

    • 脚本保存为 .py 文件(如 test_baidu.py)。

  2. 执行脚本:

    python 复制代码
    python test_baidu.py
    复制代码
     
  3. 预期结果:

    • 自动打开 Chrome 浏览器,访问百度。

    • 输入关键词并搜索,停留3秒后关闭。


3. 关键点说明

(1) 元素定位方式

  • By.ID:通过 HTML 元素的 id 属性定位(如百度搜索框的 id="kw")。

  • 其他常用定位方式:

    python 复制代码
    driver.find_element(By.NAME, "wd")          # 通过 name 属性
    driver.find_element(By.CLASS_NAME, "s_ipt") # 通过 class 属性
    driver.find_element(By.XPATH, "//input[@id='kw']") # 通过 XPATH

(2) 常见操作

  • 输入文本 :element.send_keys("文本")

  • 点击按钮 :element.click()

  • 模拟按键 :send_keys(Keys.RETURN)(回车键)

(3) 等待机制

  • 强制等待 :time.sleep(3)(简单但不推荐长期使用)。

  • 隐式等待(全局生效):

    python 复制代码
    driver.implicitly_wait(10)  # 最多等待10秒
    复制代码
     
  • 显式等待(推荐):

    python 复制代码
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "kw"))

4. 可能遇到的问题及解决

问题1:WebDriverException: Message: 'chromedriver' executable needs to be in PATH

  • 原因 :未正确配置 chromedriver 路径。

  • 解决:

    • 将 chromedriver.exe 放到 Python 安装目录的 Scripts 文件夹中。

    • 或在代码中指定路径:

      python 复制代码
      driver = webdriver.Chrome(executable_path="C:/path/to/chromedriver.exe")

问题2:浏览器闪退

  • 原因 :脚本结束后未调用 driver.quit()。

  • 解决 :确保最后调用 driver.quit() 释放资源。

问题3:元素找不到(NoSuchElementException)

  • 原因:页面未加载完或定位方式错误。

  • 解决:

    • 添加等待(如显式等待)。

    • 检查元素属性是否动态变化(用浏览器开发者工具确认)。


5. 扩展场景

示例:登录网站并截图

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com/login")

# 输入用户名密码
driver.find_element(By.ID, "username").send_keys("testuser")
driver.find_element(By.ID, "password").send_keys("password123")

# 点击登录按钮
driver.find_element(By.XPATH, "//button[@type='submit']").click()

# 截图保存
driver.save_screenshot("login_success.png")
driver.quit()
复制代码
 

总结

  1. 基础流程:启动浏览器 → 定位元素 → 操作 → 关闭。

  2. 核心技巧:合理使用等待、多种定位方式和异常处理。

  3. 调试工具:浏览器开发者工具(F12)检查元素属性。

相关推荐
zh路西法1 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
后台模板学习1 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
2601_967987372 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor2 小时前
重构Time库的抽象设计
python·重构
AI源码2 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
第九序言T2 小时前
数据分析岗 Pandas 面试题 20 道(上):概念与读代码
python·数据分析·pandas·数据处理
Dmz丶2 小时前
前端转 AI 100 天 Day 37:Few-shot 与 CoT——让模型学会“推理”
python
万联WANFLOW2 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan
孟健2 小时前
我用Grok Bot本地剪口播视频,3段提示词搞定气口切除、字幕与封面
人工智能·python·aigc
十碗饭吃不饱3 小时前
SSH 密钥认证详解:原理、实操、参数、排错与加固
运维·ssh