☰
Selenium 模拟人工网页操作全指南(点击 / 输入 / 滚动 / 提交)
2026/10/1 10:22:30 网站建设 项目流程

模拟人工网页操作全指南(点击 / 输入 / 滚动 / 提交)

它是目前应用最广泛的网页自动化工具, 能够精确地模拟人类使用浏览器进行的各种核心操作。下面这份教程对新手非常友好, 代码可以直接运行, 内容涵盖了点击、输入文字、滚动页面以及提交表单等主要功能部分, 同时还附带有完整的代码示例以及一些避免踩坑的小技巧。

一、首先要做好的前置准备就是, 需要去安装那些依赖项。

bash

运行

# 安装 Selenium 核心库

pip install selenium

# 安装自动匹配浏览器版本的驱动(无需手动下载 ChromeDriver)

pip install webdriver-manager

2. 关于环境的具体状况以及第二部分所涉及的核心操作之实现情形, 现提供完整的源代码以供查看与参考之用。

这段给出的代码, 它把那些大家平时用得最多的操作步骤, 全都包在里面了, 这里面包括像点那个东西、往里输入字、滚动屏幕、交表格、选下拉菜单里的选项、还有上传文件这几类情况都覆盖了, 里面的解释说明写得特别清楚明白, 你直接把它复制过去就能拿来用。

运行

import time

from selenium import webdriver

from selenium.webdriver.common.by import By # 元素定位方式

from selenium.webdriver.common.keys import Keys # 键盘按键

from selenium.webdriver.support.select import Select # 下拉框操作

from selenium.webdriver.support.wait import WebDriverWait # 显式等待

from selenium.webdriver.support import expected_conditions as EC # 等待条件

from selenium.webdriver.chrome.service import Service

from webdriver_manager.chrome import ChromeDriverManager

# 初始化 Chrome 浏览器(关键:自动匹配驱动版本)

def init_browser(headless=False):

"""

初始化浏览器

:param headless: 是否无头模式(无界面运行)

:return: 浏览器驱动对象

"""

chrome_options = webdriver.ChromeOptions()

# 基础配置:避免被识别为自动化程序

chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])

chrome_options.add_experimental_option("useAutomationExtension", False)

chrome_options.add_argument("--disable-blink-features=AutomationControlled")

# 无头模式(调试时可设为 False,显示浏览器界面)

if headless:

chrome_options.add_argument("--headless=new")

# 启动浏览器

driver = webdriver.Chrome(

service=Service(ChromeDriverManager().install()),

options=chrome_options

)

# 隐式等待:全局等待元素加载(最多10秒)

driver.implicitly_wait(10)

# 最大化窗口(模拟人工)

driver.maximize_window()

return driver

# 核心操作演示

if __name__ == "__main__":

# 1. 初始化浏览器

driver = init_browser(headless=False)

try:

# 2. 打开目标网页(以百度为例)

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

time.sleep(1) # 模拟人工等待页面加载

# ====================== 操作1:输入文本 ======================

# 定位搜索框(XPath 定位,最灵活)

search_box = driver.find_element(By.XPATH, '//input[@id="kw"]')

# 清空原有内容(避免残留)

search_box.clear()

# 输入关键词(模拟人工打字)

search_box.send_keys("Selenium 模拟人工操作")

time.sleep(1) # 模拟输入后停顿

# ====================== 操作2:提交表单(两种方式) ======================

# 方式1:按 Enter 键提交(更贴近人工)

search_box.send_keys(Keys.ENTER)

# 方式2:点击“搜索”按钮提交

# search_btn = driver.find_element(By.XPATH, '//input[@id="su"]')

# search_btn.click()

time.sleep(2) # 等待搜索结果加载

# ====================== 操作3:滚动页面(模拟人工翻页) ======================

# 滚动到底部(常用)

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

time.sleep(1)

# 滚动到顶部

driver.execute_script("window.scrollTo(0, 0);")

time.sleep(1)

# 滚动到指定位置(如Y轴 500px)

driver.execute_script("window.scrollTo(0, 500);")

time.sleep(1)

# ====================== 操作4:点击元素(示例:点击第一个搜索结果) ======================

# 显式等待:确保元素加载完成(比隐式等待更精准,推荐)

first_result = WebDriverWait(driver, 10).until(

EC.element_to_be_clickable((By.XPATH, '//div[@id="content_left"]/div[1]/h3/a'))

)

first_result.click()

time.sleep(2)

# ====================== 扩展操作1:下拉框选择 ======================

# 示例(需替换为有下拉框的网页):

# driver.get("https://www.w3school.com.cn/tags/tryit.asp?

filename=tryhtml_select")

# # 切换到 iframe(下拉框在 iframe 内)

# driver.switch_to.frame("iframeResult")

# # 定位下拉框

# select = Select(driver.find_element(By.XPATH, '//select'))

# # 选择方式1:按值选择

# select.select_by_value("volvo")

# # 选择方式2:按文本选择

# select.select_by_visible_text("Saab")

# # 选择方式3:按索引选择

# select.select_by_index(2)

# time.sleep(1)

# ====================== 扩展操作2:文件上传 ======================

# 示例(需替换为有上传按钮的网页):

# upload_btn = driver.find_element(By.XPATH, '//input[@type="file"]')

# # 传入文件路径(绝对路径)

# upload_btn.send_keys("C:/test.txt")

# time.sleep(1)

print("所有操作执行完成!

")

except Exception as e:

print(f"操作出错:{str(e)}")

finally:

# 3. 关闭浏览器(无论成功/失败都执行)

time.sleep(3) # 停留3秒查看效果

driver.quit()

三、核心操作详解, 也就是第一步要做的基础要素定位。

它支持总共 8 种定位的方式, 如果你是新手的话, 建议优先把下面的这 3 种给它掌握住:

表格

定位方式

语法示例

适用场景

ID(最稳定)

By.ID, "kw"

这个元素包含了一个唯一的 ID, 比方说百度搜索引擎里那个搜索框。

XPath, 这是最为灵活的一个选项。

通过XPATH的方式, 去定位那个元素, 也就是使用这个表达式 '//input。

@name=""

'

在没有 ID 的情况下, 应该通过属性或者文本来进行定位。

CSS 选择器

By., "#su"

前端开发者常用,简洁

定位技巧:

2. 对核心操作步骤进行拆解, 第一步是把输入的文本处理一下。

运行

# 步骤:定位元素 → 清空 → 输入

elem = driver.find_element(By.XPATH, '//input[@id="kw"]')

elem.clear() # 必须清空,避免原有内容干扰

elem.send_keys("要输入的内容")

(2)点击操作

运行

# 普通点击

elem.click()

# 双击

elem.double_click()

# 右键点击

elem.context_click()

(3)滚动页面

运行

# 滚动到底部

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# 滚动到顶部

driver.execute_script("window.scrollTo(0, 0);")

# 平滑滚动(更贴近人工)

driver.execute_script("window.scrollTo({top: 500, behavior: 'smooth'});")

(4)提交表单

运行

# 方式1:按 Enter 键(推荐,模拟人工)

elem.send_keys(Keys.ENTER)

# 方式2:点击提交按钮

driver.find_element(By.XPATH, '//button[@type="submit"]').click()

3. 等待机制(避坑关键)

新手最常见的错误在于没有确保页面已经加载完成就开始进行操作, 这样一来就会导致系统抛出元素找不到的异常。针对这一问题, 我们可以提供两种不同的等待方式来解决这个麻烦。

表格

等待方式

语法示例

适用场景

隐式等待

.(10)

在更广泛的范围整体生效, 针对一些相对简单的场景条件。

显式等待(推荐)

(, 10).until(EC.ble((By.XPATH, '//')))

等到那个元素变成了可以被点击的状态, 或者看到了那个元素的存在。

四、这是一个让新人一定要看的避坑指南, 其中列出了元素定位失败的几个常见原因和解决办法。关于原因部分, 通常是因为目标元素嵌套在某个特定的框架内部、页面采用了动态加载机制导致的、或者你使用的定位指令本身写错了。

针对这些情况, 如果你发现元素确实存在于嵌套结构中, 你需要先用 ..frame("") 这个命令切换到对应的层级去操作, 等到任务完成了之后, 记得再用 ..() 切换回默认的主框架去。另外, 千万不要用 sleep 这种静态等待的方式, 而应该改用更具稳定性的显式等待功能来帮助程序识别状态。

最后, 请务必再次确认你的定位规则没有问题, 建议打开浏览器的 F12 开发者工具来进行仔细校验。

导致被网站识别为机器人的原因, 通常表现为缺少反检测配置, 或者操作速度过快;解决办法是, 需要在代码中添加反检测配置内容(诸如等要素), 并在每个操作步骤后面增加time.sleep(1-2)这样的代码段, 以此来模拟人工操作的正常节奏, 从而避免在短时间段内进行高频次的操作。

关于下拉框以及弹窗的操作失败问题,需要特别注意的是, 对下拉框进行操作时, 必须使用特定的类来执行, 绝不能直接点击, 而对于弹窗的处理, 应该首先处理弹窗部分的确认动作(例如弹出警报确认后, 再进行其他其他元素的操作)。

总结了一下核心流程, 那就是先初始化浏览器, 接着去定位元素, 然后再执行操作, 比如点击、输入或者滚动, 最后再关闭浏览器;关键的技巧在于要优先使用 XPath 来定位元素, 利用显式等待来避免加载带来的问题, 在执行完操作之后还要加上延时来模拟人工的操作;需要特别注意的避坑重点包括处理弹窗以及配置反检测参数等等, 同时还需要控制好操作的节奏和速度, 这样才能有效地避免被反爬机制给拦截住。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询