当前位置: 首页 > news >正文

学习Python中Selenium模块的基本用法(2:下载浏览器驱动)

  WebDriver是Selenium模块最重要的组件之一,其支持通过编程接口控制浏览器行为,发送指令到浏览器驱动,实现点击、输入、导航等真实用户操作。不同的浏览器对应不同的WebDriver,参考文献8中介绍了常用浏览器的WebDriver下载和使用方式。
测试过程中首先尝试下载chrome浏览器的WebDriver,但是搜索到的参考文献5无法访问,参考文献4中的WebDriver版本与chrome最新版本号差距较大,因此无法基于chrome验证Selenium模块功能(写本文时发现参考文献8中提供的下载网页可用,且与chrome最新版本接近,有需要的可以访问参考文献9下载),最终使用火狐浏览器。
基于参考文献6下载并安装最新版本的火狐浏览器,然后在参考文献7中下载最新版本的、与操作系统相匹配的geckodriver,如下图所示,本文下载图中划红线的版本,将其解压并放在本机Python安装目录下的Scripts文件夹内(也可以放置在任意文件夹,然后在全局变量PATH中添加该路径)。

在这里插入图片描述
  打开命令行运行geckodriver --version,检查geckodriver是否能正常运行及版本号,如下图所示:
在这里插入图片描述
  最后简单验证geckodriver 是否可用,下面的测试代码基于Selenium模块使用百度搜索并打开DeepSeek官网,代码运行效果如下图所示:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 打开百度网址
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")time.sleep(2)# 查找搜索框并输入DeepSeek官网,然后模拟按回车键
search_box = driver.find_element(By.ID, "kw")  # 百度搜索框的ID为"kw"
search_box.send_keys("DeepSeek官网")
search_box.send_keys(Keys.RETURN)time.sleep(3)# 找到第一个结果并点击跳转
first_result = driver.find_element(By.CSS_SELECTOR, "div.result:first-child h3 a")
first_result.click()

在这里插入图片描述
参考文献:
[1]https://www.selenium.dev/zh-cn/
[2]https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/
[3]https://blog.csdn.net/kk_lzvvkpj/article/details/148610502
[4]https://registry.npmmirror.com/binary.html?path=chromedriver/
[5]https://chromedriver.chromium.org/
[6]https://www.firefox.com.cn/
[7]https://github.com/mozilla/geckodriver/releases/
[8]https://www.cnblogs.com/sunisnyu/p/18442541
[9]https://googlechromelabs.github.io/chrome-for-testing/#stable

http://www.lryc.cn/news/602208.html

相关文章:

  • 【前端】Tab切换时的数据重置与加载策略技术文档
  • 三角洲摸金模拟器(简易版本)(开源)
  • Claude Launcher:支持Kimi K2的Claude Code可视化启动工具
  • ofd文件转pdf
  • iphone手机使用charles代理,chls.pro/ssl 后回车 提示浏览器打不开该网页
  • 【Spring Boot 快速入门】二、请求与响应
  • 搜索引擎高级搜索指令大全(Google、百度等浏览器通用)
  • nvim cspell
  • 打通视频到AI的第一公里:轻量RTSP服务如何重塑边缘感知入口?
  • 中国自然灾害影响及损失数据
  • Ubuntu 安装redis和nginx
  • 【JSqlParser】sql解析器使用案例
  • jimfs:Java内存文件系统,脱离磁盘IO瓶颈利器
  • 全球Wi-Fi室外天线市场洞察2024–2032:规模、驱动因素与技术演进
  • Mybatis_4
  • Focusing on Tracks for Online Multi-Object Tracking—CVPR2025多目标跟踪(TrackTrack)
  • Ethereum:Geth运维实战,geth export与geth import命令的实用性深度评估
  • 使用 Qt Installer Framework(IFW)进行打包
  • 网络安全第14集
  • 8.1 ESP32CAM 服务器 网络摄像头
  • 【mysql】—— mysql中的timestamp 和 datetime(6) 有什么区别,为什么有的地方不建议使用timestamp
  • 深入探索Linux:忙碌的车间“进程”间通信
  • 【Linux】基本指令(2)
  • Linux DNS解析1--终端通过网关或者路由器进行域名解析的原理
  • WAIC 2025深度解析:当“养虎”警示遇上机器人拳击赛
  • 设计模式(二十二)行为型:策略模式详解
  • 发布“悟能”具身智能平台,商汤让机器人像人一样和现实世界交互
  • 枚举策略模式实战:优雅消除支付场景的if-else
  • 时序数据基座升维:Apache IoTDB 以“端边云AI一体化”重构工业智能决策
  • 企业级JWT验证最佳方案:StringUtils.hasText()