ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

Selenium 模拟人工网页操作全指南(点击 / 输入 / 滚动 / 提交) 模拟人工网页操作全指南点击 / 输入 / 滚动 / 提交它是目前应用最广泛的网页自动化工具, 能够精确地模拟人类使用浏览器进行的各种核心操作。下面这份教程对新手非常友好, 代码可以直接运行, 内容涵盖了点击、输入文字、滚动页面以及提交表单等主要功能部分, 同时还附带有完整的代码示例以及一些避免踩坑的小技巧。一、首先要做好的前置准备就是, 需要去安装那些依赖项。bash运行# 安装 Selenium 核心库pip install selenium# 安装自动匹配浏览器版本的驱动无需手动下载 ChromeDriverpip install webdriver-manager2. 关于环境的具体状况以及第二部分所涉及的核心操作之实现情形, 现提供完整的源代码以供查看与参考之用。这段给出的代码, 它把那些大家平时用得最多的操作步骤, 全都包在里面了, 这里面包括像点那个东西、往里输入字、滚动屏幕、交表格、选下拉菜单里的选项、还有上传文件这几类情况都覆盖了, 里面的解释说明写得特别清楚明白, 你直接把它复制过去就能拿来用。运行import timefrom selenium import webdriverfrom 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 Servicefrom webdriver_manager.chrome import ChromeDriverManager# 初始化 Chrome 浏览器关键自动匹配驱动版本def init_browser(headlessFalse):初始化浏览器: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-featuresAutomationControlled)# 无头模式调试时可设为 False显示浏览器界面if headless:chrome_options.add_argument(--headlessnew)# 启动浏览器driver webdriver.Chrome(serviceService(ChromeDriverManager().install()),optionschrome_options)# 隐式等待全局等待元素加载最多10秒driver.implicitly_wait(10)# 最大化窗口模拟人工driver.maximize_window()return driver# 核心操作演示if __name__ __main__:# 1. 初始化浏览器driver init_browser(headlessFalse)try:# 2. 打开目标网页以百度为例driver.get(https://www.baidu.com)time.sleep(1) # 模拟人工等待页面加载# 操作1输入文本 # 定位搜索框XPath 定位最灵活search_box driver.find_element(By.XPATH, //input[idkw])# 清空原有内容避免残留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[idsu])# 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轴 500pxdriver.execute_script(window.scrollTo(0, 500);)time.sleep(1)# 操作4点击元素示例点击第一个搜索结果 # 显式等待确保元素加载完成比隐式等待更精准推荐first_result WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, //div[idcontent_left]/div[1]/h3/a)))first_result.click()time.sleep(2)# 扩展操作1下拉框选择 # 示例需替换为有下拉框的网页# driver.get(https://www.w3school.com.cn/tags/tryit.asp?filenametryhtml_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[typefile])# # 传入文件路径绝对路径# 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[idkw])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[typesubmit]).click()3. 等待机制避坑关键新手最常见的错误在于没有确保页面已经加载完成就开始进行操作, 这样一来就会导致系统抛出元素找不到的异常。针对这一问题, 我们可以提供两种不同的等待方式来解决这个麻烦。表格等待方式语法示例适用场景隐式等待.(10)在更广泛的范围整体生效, 针对一些相对简单的场景条件。显式等待推荐(, 10).until(EC.ble((By.XPATH, //)))等到那个元素变成了可以被点击的状态, 或者看到了那个元素的存在。四、这是一个让新人一定要看的避坑指南, 其中列出了元素定位失败的几个常见原因和解决办法。关于原因部分, 通常是因为目标元素嵌套在某个特定的框架内部、页面采用了动态加载机制导致的、或者你使用的定位指令本身写错了。针对这些情况, 如果你发现元素确实存在于嵌套结构中, 你需要先用 ..frame() 这个命令切换到对应的层级去操作, 等到任务完成了之后, 记得再用 ..() 切换回默认的主框架去。另外, 千万不要用 sleep 这种静态等待的方式, 而应该改用更具稳定性的显式等待功能来帮助程序识别状态。最后, 请务必再次确认你的定位规则没有问题, 建议打开浏览器的 F12 开发者工具来进行仔细校验。导致被网站识别为机器人的原因, 通常表现为缺少反检测配置, 或者操作速度过快解决办法是, 需要在代码中添加反检测配置内容诸如等要素, 并在每个操作步骤后面增加time.sleep1-2这样的代码段, 以此来模拟人工操作的正常节奏, 从而避免在短时间段内进行高频次的操作。关于下拉框以及弹窗的操作失败问题需要特别注意的是, 对下拉框进行操作时, 必须使用特定的类来执行, 绝不能直接点击, 而对于弹窗的处理, 应该首先处理弹窗部分的确认动作例如弹出警报确认后, 再进行其他其他元素的操作。总结了一下核心流程, 那就是先初始化浏览器, 接着去定位元素, 然后再执行操作, 比如点击、输入或者滚动, 最后再关闭浏览器关键的技巧在于要优先使用 XPath 来定位元素, 利用显式等待来避免加载带来的问题, 在执行完操作之后还要加上延时来模拟人工的操作需要特别注意的避坑重点包括处理弹窗以及配置反检测参数等等, 同时还需要控制好操作的节奏和速度, 这样才能有效地避免被反爬机制给拦截住。
返回列表