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

selenium前期准备

  1. 驱动地址:
    a. chromedriver:https://googlechromelabs.github.io/chrome-for-testing/
    b. https://registry.npmmirror.com/binary.html?path=chromedriver/

  2. selenium原理:Selenium 是一个用于自动化测试 Web 应用程序的工具集
    a. 浏览器驱动(WebDriver)
    ⅰ. Selenium 通过与各种主流浏览器的驱动程序进行通信来控制浏览器的行为。
    ⅱ. 例如,对于 Chrome 浏览器有 ChromeDriver,对于 Firefox 有 GeckoDriver 等。
    b. 发送指令和接收响应
    ⅰ. 它将用户编写的测试脚本中的操作指令(如点击、输入、获取元素等)转化为浏览器能够理解的命令。
    ⅱ. 浏览器执行这些命令后,将结果返回给 Selenium 。
    c. 页面元素定位
    ⅰ. Selenium 提供了多种方式来定位网页中的元素,例如通过 ID、Name、Class Name、CSS 选择器、XPath 等。
    ⅱ. 一旦定位到元素,就可以对其进行相应的操作。
    ⅲ. 例如,如果要点击一个具有特定 ID 的按钮,Selenium 会使用相应的定位方法找到这个按钮元素,然后发送点击指令。
    ⅳ. https://blog.csdn.net/baidu_28340727/article/details/126913997
    d. 模拟用户行为
    ⅰ. 能够模拟真实用户在浏览器中的各种操作,如鼠标点击、键盘输入、页面滚动等
    e. 测试断言
    ⅰ. 可以对页面的内容、元素的属性、预期结果等进行断言,以判断测试是否通过
    总的来说,Selenium 利用浏览器驱动与浏览器进行交互,通过定位元素和模拟用户操作来实现对 Web 应用程序的自动化测试和控制。

  3. selenium源代码实现原理:
    a. Selenium 客户端(使用 Python 等语言编写的自动化测试脚本)首先初始化一个服务(service),并借助 WebDriver 来启动浏览器驱动程序(如 chromedriver.exe)。在此步骤中,服务的初始化是为后续与浏览器驱动的通信做好准备,而启动特定的浏览器驱动程序则是为了能够控制相应的浏览器。
    b. 接着,通过 RemoteWebDriver 向浏览器驱动程序发送 HTTP 请求。浏览器驱动程序会对这些请求进行解析,然后打开浏览器,并获取一个唯一的 session ID。后续若要对该浏览器进行更多操作,都需要携带这个 ID 以确保请求的准确性和关联性。这里的 HTTP 请求是客户端与驱动程序之间通信的方式,而 session ID 则用于标识和跟踪特定的浏览器会话。
    c. 浏览器成功打开后,会绑定特定的端口,并将启动后的浏览器视作 WebDriver 的远程服务器(remote server)。此过程使得浏览器能够接收来自客户端的指令,并准备执行相应的操作。
    d. 当浏览器打开后,所有的 Selenium 操作(如访问特定地址、查找元素等)都会通过 RemoteConnection 连接到远程服务器。然后,使用 execute 方法向远程服务器发送指令(send a command to the remote server),该方法内部会调用 _request 方法来发送一个 HTTP 请求给远程服务器(send an HTTP request to the remote server)。这一系列的操作机制确保了测试脚本能够精确地控制浏览器的行为。
    e. 浏览器接收到请求的内容后,会执行对应的动作。浏览器根据接收到的指令执行具体的操作,如加载页面、点击元素、填写表单等。
    f. 最后,浏览器会将执行动作的结果通过浏览器驱动程序返回给测试脚本。
    这样,测试脚本就能够获取到浏览器操作的结果,从而进行后续的判断和处理,例如验证页面元素是否存在、内容是否正确等。
    综上所述,Selenium 通过这样的一系列步骤实现了对浏览器的自动化控制和测试。
    服务器端需要维护浏览器的Session,客户端首次发送请求的字符串是’/session/ s e s s i o n I d / u r l ′ 。服务器端将根据 u r l 打开对应的 u r l 地址,同时将 sessionId/url'。服务器端将根据url打开对应的url地址,同时将 sessionId/url。服务器端将根据url打开对应的url地址,同时将sessionId解析成真实的值。然后返回给客户端。以后客户端再向浏览器发送请求时,将会携带session值一起发送。
    https://cloud.tencent.com/developer/article/2033963

相关文章:

selenium前期准备

驱动地址: a. chromedriver:https://googlechromelabs.github.io/chrome-for-testing/ b. https://registry.npmmirror.com/binary.html?pathchromedriver/ selenium原理:Selenium 是一个用于自动化测试 Web 应用程序的工具集 a. 浏览器驱动&#xff0…...

[Python人工智能] 四十六.PyTorch入门 (1)环境搭建、神经网络普及和Torch基础知识

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别研究。这篇文章将介绍PyTorch入门知识。前面我们的Python人工智能主要以TensorFlow和Keras为主,…...

示例:推荐一个应用Adorner做的通知和提示消息对话框

一、目的:在开发过程中,增加一些提示消息可以很好的提高用户体验,下面介绍一个用于增加提示消息的库 二、效果如下 可以看到右侧顶端弹出提示消息,消息间隔3s自动退出 三、环境 VS2022 Net7 四、使用方式 安装nuget包&#xff…...

nvdiadocker相关配置S3Gaussian

https://download.csdn.net/download/sinat_21699465/89458214 dockerfile文件参考: https://download.csdn.net/download/sinat_21699465/89458214 prework: 显卡驱动决定了cuda版本支持的上限。例如nvdia535驱动最高支持cuda12.2所以显卡驱动版本选…...

【科技前沿】电子设计新贵SmartEDA:为何它引领行业风潮?

在当今这个电子科技日新月异的时代,电子设计工具如同设计师的魔法棒,不断推动着产品创新的速度。而近期,一款名为SmartEDA的电子国产设计仿真软件异军突起,成为了行业内的新宠。那么,SmartEDA究竟有何过人之处&#xf…...

免费悬浮翻译器哪个好?测评5款悬浮翻译器

在享受休闲时光时,我们通常都希望不被打扰,对吧? 然而,有时打扰我们的并非是外界的干扰,而是在观看外语视频时,无法理解视频内容的烦躁感。 不过,今天本文将为大家揭开几款屏幕悬浮翻译软件的…...

压缩文件解压方法总结

在日常工作和生活中,压缩文件已经成为我们传输和存储大文件的常见方式。压缩文件可以将多个文件或文件夹打包成一个文件,并通过压缩算法减小文件的体积,从而节省存储空间和传输时间。收到压缩文件后,我们需要将其解压才能查看和使…...

探索Elastic Search:强大的开源搜索引擎,详解及使用

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引…...

vue中的代码分割

随着Web应用的日益复杂化,用户对页面加载速度的期望越来越高。在这种背景下,前端性能优化成为了开发者们必须面对的挑战。Vue.js,作为现代前端开发的首选框架之一,其轻量级和灵活性为构建高性能的Web应用提供了可能。然而&#xf…...

java课程设计GUI学生信息管理系统

目录 系统内容.. 3 用户界面模块... 4 数据存储模块... 4 信息管理模块... 4 管理模块.. 4 主要模块的算法描述... 4 –简要的语言描述... 4 运行及调试分析(测试数据及测试结果).. 5 课程设计总结... 7 参考文献(至少三个&#xf…...

一网通办怎么办?一网统管怎么管?

一网通办怎么办?一网统管怎么管? 下面资源来源于网络,如有侵权请联络删除! **一网通办与一网统管的建设背景、建设情况及建设意义** 一、建设背景随着信息技术的飞速发展,传统的政务服务方式已难以满足人民群众日益增长的需求。各部门信息系统独立运行,导致信息孤岛现象…...

Kubernetes Dashboard

Minikube 环境搭建 Kubernetes 的基本架构 Kubernetes 声明式语言 YAML YAML操作Kubernetes核心对象 CentOs搭建Kubernetes集群 Kubernetes进阶对象Deployment、DaemonSet、Service Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller Kubernetes集群部署项目实践 …...

NSSCTF-Web题目15

目录 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]Ez_upload 1、题目 2、知识点 3、思路 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 SSTI、Jinja2 参考链接:1. SSTI(模板注入)漏洞(…...

每天认识:轮询和中断

轮询(Polling)和中断(Interrupt)是两种不同的事件处理机制,通常用于操作系统、硬件设备或软件程序中,以响应外部事件或内部状态变化。下面分别解释这两个概念: 轮询(Polling&#x…...

SpringBoot中使用MQTT实现消息的订阅和发布

SpringBoot中使用MQTT实现消息的订阅和发布 背景 java框架SpringBoot通过mQTT通信 控制物联网设备 还是直接上代码 第一步依赖&#xff1a; <!--mqtt相关依赖--><dependency><groupId>org.springframework.integration</groupId><artifactId>s…...

等保测评练习10

等级保护初级测评师试题10 姓名&#xff1a; 成绩&#xff1a; 判断题&#xff08;10110分&#xff09; 1.等级保护2.0三级系统测评合格最低分为60分&#xff08;&#xff09; 70分且不能有高风险 2.当远程管理云计算平台中设备是…...

VBA学习(16):工作表事件示例:输入数据后锁定单元格

在工作表单元格中输入数据后&#xff0c;该单元格就被锁定&#xff0c;不能再编辑。 打开VBE&#xff0c;在工程资源管理器中双击该工作表名称打开其代码模块&#xff0c;在其中输入下面的代码&#xff1a; 假设整个工作表的LockedFalse Private Sub Worksheet_Change(ByVal …...

mysql学习——SQL中的DDL和DML

SQL中的DDL和DML DDL数据库操作&#xff1a;表操作 DML添加数据修改数据删除数据 学习黑马MySQL课程&#xff0c;记录笔记&#xff0c;用于复习。 DDL DDL&#xff1a;Data Definition Language&#xff0c;数据定义语言&#xff0c;用来定义数据库对象(数据库&#xff0c;表&…...

什么是多态?一文彻底搞懂!

什么是多态 面向对象程序设计有三要素&#xff1a;封装、继承&#xff08;或组合&#xff09;、多态&#xff0c;前两者较好理解&#xff0c;多态总让人困惑&#xff0c;不知道具体有什么作用&#xff0c;更不知道为什么要用多态。今天就来详细分析下什么是多态&#xff0c;以…...

CST电磁仿真软件的参数类型和含义【电磁仿真入门教程】

如果你是一位工程师或设计师&#xff0c;那你对电磁仿真软件CST Studio Suite一定不会感到陌生。CST软件可以帮助你模拟电磁场和电路行为&#xff0c;从而优化产品设计。本文将带你了解CST电磁仿真软件的一些关键参数&#xff0c;并解释其含义。CST电磁仿真软件的参数是指在使用…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...