首页 > 其他分享 >使用Selenium进行网页自动化测试

使用Selenium进行网页自动化测试

时间:2025-01-13 22:58:02浏览次数:3  
标签:网页 chrome Selenium proxy 自动化 import options Proxy

在使用Selenium进行网页自动化测试时,获取网络请求数据(即network数据)并不直接由Selenium库提供。Selenium主要用于与网页内容进行交互(如点击、输入文本、获取页面元素等),但它本身不拦截或记录网络请求。

然而,你可以结合Selenium与其他工具(如BrowserMob Proxy、Wireshark、mitmproxy、或Selenium自带的Chrome DevTools Protocol)来获取网络请求数据。下面是一些常用的方法:

方法一:使用BrowserMob Proxy

BrowserMob Proxy是一个Java程序,可以与Selenium配合使用来捕获HTTP和HTTPS流量。

  1. 安装BrowserMob Proxy

    • 下载并安装Java。
    • 下载BrowserMob Proxy。
  2. 设置Python代码

    • 使用browsermob-proxy-py库(Python的BrowserMob Proxy绑定)。
pip install browsermob-proxy-py
from selenium import webdriver
from browsermobproxy import Server
from selenium.webdriver.common.proxy import Proxy, ProxyType

# 启动BrowserMob Proxy服务器
server = Server("/path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()

# Selenium的Proxy配置
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy))

# 创建一个Selenium WebDriver实例
driver = webdriver.Chrome(chrome_options=chrome_options)

# 获取新会话的HAR(HTTP Archive)数据
proxy.new_har("example")

# 导航到目标URL
driver.get("http://example.com")

# 获取HAR数据
har_data = proxy.har

# 打印HAR数据
print(har_data)

# 关闭WebDriver和BrowserMob Proxy服务器
driver.quit()
server.stop()

方法二:使用mitmproxy

mitmproxy是一个强大的中间人代理,可以拦截、修改和检查HTTP和HTTPS流量。

  1. 安装mitmproxy

    pip install mitmproxy
    
  2. 设置mitmproxy与Selenium

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from mitmproxy import options
from mitmproxy.tools.dump import DumpMaster
from mitmproxy import http

# 配置mitmproxy监听端口
options = options.Options(listen_host='127.0.0.1', listen_port=8080)

# 定义处理HTTP请求的类
class Interceptor:
    def __init__(self):
        self.flows = []

    def request(self, flow: http.HTTPFlow) -> None:
        self.flows.append(flow)

# 启动mitmproxy
m = DumpMaster(options)
interceptor = Interceptor()
m.addons.add(interceptor)
try:
    m.run()
except KeyboardInterrupt:
    m.shutdown()

# 配置Selenium的Proxy
proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': '127.0.0.1:8080',
    'sslProxy': '127.0.0.1:8080'
})

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server=http://127.0.0.1:8080")

# 创建一个Selenium WebDriver实例
driver = webdriver.Chrome(chrome_options=chrome_options)

# 导航到目标URL
driver.get("http://example.com")

# 获取捕获的HTTP请求
for flow in interceptor.flows:
    print(flow.request.url)

# 关闭WebDriver
driver.quit()

注意:运行mitmproxy可能需要你配置证书以捕获HTTPS流量。

方法三:使用Chrome DevTools Protocol(CDP)

Chrome DevTools Protocol允许你与Chrome浏览器进行低级别的通信,包括获取网络请求数据。Selenium 4+提供了对CDP的直接支持。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time

# 配置Chrome选项
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  # 连接到已打开的Chrome实例

# 创建WebDriver实例
driver = webdriver.Chrome(service=Service(), options=chrome_options)

# 导航到目标URL
driver.get("http://example.com")

# 使用CDP获取网络请求数据
# 需要导入CDP的库或使用selenium的execute_cdp_cmd方法
# 示例代码取决于你如何配置和获取CDP数据
# driver.execute_cdp_cmd('Network.enable', {})
# driver.execute_cdp_cmd('Network.setCaptureMode', {"mode": "includeAll"})
# network_logs = driver.execute_cdp_cmd('Network.getAllRequests', {})
# print(network_logs)

# 这里仅是一个示例,你需要根据CDP文档来实现具体功能

# 关闭WebDriver
driver.quit()

这种方法要求你事先手动打开Chrome浏览器并配置远程调试端口(通常是9222)。

注意事项

  • 确保你的Chrome浏览器版本与Selenium WebDriver版本兼容。
  • 使用HTTPS时,可能需要处理SSL证书问题。
  • 在处理网络请求数据时,确保遵守相关法律法规和隐私政策。

通过以上方法,你可以在使用Selenium进行网页自动化测试时获取网络请求数据。

标签:网页,chrome,Selenium,proxy,自动化,import,options,Proxy
From: https://blog.csdn.net/u014158430/article/details/145125879

相关文章

  • python bs4 selenium 查找a href=javascript:();的实际点击事件和url
    在使用BeautifulSoup和Selenium时,处理href="javascript:;"的链接需要一些额外的步骤,因为这些链接不直接指向一个URL,而是通过JavaScript代码来执行某些操作。这可能包括导航到另一个页面、触发模态窗口、显示/隐藏内容等。以下是如何使用Selenium来查找和处理这......
  • 21. 大学生HTML5期末大作业 ―【简单的西藏介绍旅游主题网页】 Web前端网页制作 html5
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐一、网页概述本实例应用html5+css3,div+css布局,代码简单,带实验报告书。本网页支持如Dreamweaver、HBuilder、Text......
  • 18. 大学生HTML5期末大作业 ―【简单的旅游网页】 Web前端网页制作 html5+css3
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐一、网页概述本实例应用html5+css3,div+css布局,代码简单,带实验报告书。本网页支持如Dreamweaver、HBuilder、Text......
  • 【自动化测试】—— Appium安装配置保姆教程(图文详解)
    目录一.环境准备二.JDK安装1.JDK下载2.JDK安装3.配置环境4.验证安装三.AndroidSDK安装1.下载AndroidSDK2.安装AndroidSDK3.安装工具4.配置环境5.验证安装四.NodeJS安装1.下载NodeJS2.安装NodeJS3.验证安装4.安装淘宝镜像五.Python及依......
  • AMD发布科研Agent,论文自动化评分趋近顶会NeurIPS水平~
    科学发现漫长且成本高昂,为了加速科学发现,降低研究成本,并提高研究质量,芯片厂商AMD推出了AgentLaboratory,这是一个基于自主大型语言模型(LLM)的框架,能够完成整个研究流程。AgentLaboratory接受人类研究想法和一组笔记作为输入,将其提供给一系列由LLM驱动的专门Agent组成的流程线,......
  • 实战自动化加解密&加密场景下的暴力破解,黑客技术零基础入门到精通实战教程!
    场景拿到一个站,请求和响应中的数据均经过加密,但是我们想在测试中看到明文数据并可以修改前两天看到有个师傅的使用双层mitmproxy代理实现自动化加解密的思路,今天来实现一下。顺便回忆一下该场景下使用Yakit热加载进行数据暴力破解。思路请求:设置下游代理捕获浏览器......
  • DevOps 企业级 CI/CD 实战 —— 整合 GitLab+Jenkins+Harbor+Docker 实现代码全自动化
    前言随着AI人工智能、云计算、Docker、K8S等容器技术等的发展,DevOps得到了广泛的应用和推广,CI/CD(持续集成/持续部署)等概念不断深化和完善。CI/CD是现代软件开发中的重要实践,CI(ContinuousIntegration,持续集成)强调开发人员频繁地将代码集成到共享仓库,并且每次集成都......
  • 微信必备自动化操作,分分钟提升工作效率!
    在管理多个微信号的过程中,如何提升效率、节省时间是每个职场人士都在思考的问题。通过使用个微管理系统,你将能够实现微信自动化,让管理变得高效。1、批量自动加好友功能让你告别繁琐的手动操作只需将客户数据批量导入系统,设定好添加规则,系统便能自动为你添加好友。这一功能不......
  • 推荐1款自动化爬虫神级软件,打工人必备神器,解放你的双手
    聊一聊这个软件功能特别适合对工作有固定性的朋友。比如,每天什么时候,干什么事,怎么干。一件事有固定的步骤,重复性强。特别是每天固定采集下载某网站或网站上的信息。主要是为了了解行情等情况。这个软件就非常适合。软件介绍可视化爬虫软件打开软件可以根据需要选择......
  • 你知道网页三剑客指的是什么吗?你有用过Dreamwear吗?
    网页三剑客指的是一套强大的网页编辑工具,它们分别是Dreamweaver、Fireworks和Flash。这三个软件最初是由美国的Macromedia公司开发出来的,后来被Adobe公司收购。它们各自在网页设计和开发过程中发挥着不同的作用,相互之间能够无缝合作,因此被形象地称为“网页三剑客”。Dreamweave......