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

Python Selenium:Web自动化测试与爬虫开发

Python Selenium:Web自动化测试与爬虫开发

      • Python Selenium:Web自动化测试与爬虫开发
        • 安装Selenium
        • 设置WebDriver
        • 基础示例
        • 页面元素交互
        • 处理JavaScript和Cookies
        • 浏览器控制
        • 屏幕截图
        • Headless Mode
        • 结束会话
        • 错误处理与调试

***本文由AI辅助生成***

Python Selenium:Web自动化测试与爬虫开发

Selenium是一个强大的工具套件,主要用于自动化Web浏览器操作。它支持多种编程语言,包括Python,广泛应用于自动化Web应用测试、网页抓取等领域。Selenium WebDriver 可以驱动无界面的浏览器(Headless Browser)或真实浏览器进行操作。

安装Selenium

首先,你需要安装Selenium。如果你使用的是Python,可以在命令行中输入以下命令进行安装:

pip install selenium
设置WebDriver

为了使用Selenium,你需要对应所选浏览器的Driver。例如,如果你选择Chrome,则需要下载 ChromeDriver,并将其路径添加到系统的 PATH 环境变量中,或者直接在Python脚本中指定路径。

基础示例

下面是一个使用Selenium启动Google Chrome并访问百度的Python示例:

from selenium import webdriver

driver = webdriver.Chrome()  # 或 webdriver.Firefox(), 根据你的浏览器选择
driver.get('http://www.baidu.com')
print(driver.title)
driver.quit()
页面元素交互

假设我们要在一个表单中填写用户名和密码并提交:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

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

username.send_keys("your_username")
password.send_keys("your_password")

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

# 显示等待直到元素可见
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "some_id"))
)
处理JavaScript和Cookies

Selenium可以执行JavaScript,这对于某些动态加载的内容特别有用:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 滚动到底部

cookies = driver.get_cookies()
for cookie in cookies:
    print(cookie)
浏览器控制

除了模拟登录和点击按钮外,还可以控制浏览器前进、后退、刷新等:

driver.back()
driver.forward()
driver.refresh()
屏幕截图

保存网页快照:

driver.save_screenshot('screenshot.png')
Headless Mode

在不开启图形界面的情况下运行Selenium:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
结束会话

不要忘记结束webdriver会话:

driver.quit()
错误处理与调试

在编写Selenium脚本时可能会遇到网络超时等问题,适当增加错误处理逻辑:

try:
    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:
    driver.quit()

Selenium提供了丰富的API和功能,结合Python的强大编程能力,可以实现复杂的Web自动化任务,如自动填写表单、截屏、上传下载文件、模拟人类行为等。无论是用于自动化测试还是数据抓取,Selenium都是一个不可或缺的工具。


http://www.kler.cn/a/409257.html

相关文章:

  • 自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜
  • 【数据结构】—— 线索二叉树
  • flatter算法详解
  • 使用 LSTM(长短期记忆网络) 模型对时间序列数据(航空旅客人数数据集)进行预测
  • cangjie (仓颉) vscode环境搭建
  • ctfshow-Misc入门(1-16)
  • C语言指针作业
  • 区块链应用到银行的优势
  • 如何调试 chrome 崩溃日志(MAC)
  • [译]Elasticsearch Sequence ID实现思路及用途
  • 快速了解RDD的创建与处理过程
  • Jedis存储一个-以String的形式的对象到Redis
  • 【Go】-go中的锁机制
  • 【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
  • MySQL中的ROW_NUMBER窗口函数简单了解下
  • 【网络安全设备系列】3、IPS(入侵防御系统)
  • OpenCV4.9 dnn人脸识别
  • Linux的开发工具(三)
  • 设计模式之 命令模式
  • C++不完整类型(Incomplete Type)的检测与避免
  • Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器
  • 浅谈TLP184小型平面光耦
  • docker 卸载与安装
  • 生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验
  • HTML 表单实战:从创建到验证
  • C#里怎么样实现自己的类满足for-each循环访问?