selenium前期准备

1. 驱动地址:

a. chromedriver:https://googlechromelabs.github.io/chrome-for-testing/
b. https://registry.npmmirror.com/binary.html?path=chromedriver/
下载好的驱动一般放在Python初始文件夹下,例如:D:\Python3.8
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM+Jsp的校园餐厅管理

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

OpenAI CTO米拉·穆拉提谈未来:AI一年半后达到博士水平

人工智能(AI)领域近年来的发展迅猛,特别是在大语言模型(LLM)的进步上。最近,OpenAI的首席技术官(CTO)米拉穆拉提(Mira Murati)在达特茅斯学院的一次采访中&am…

Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息;

Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息; 智慧工地是指运用信息化手段,通过三维设计平台对工程项目进行精确设计和施工…

SpringBoot-注解@PropertiySource读取外部属性文件

ConfigurationProperties和Value两个注解能从配置文件中获取数据,但是前面讲了他们是从全局配置文件中获取,且只能从全局配置文件中获取,那么如果是一些数值类的数据放在全局配置文件里,是不怎么合适的,我们往往会把他…

WPF 深入理解六、ControlTemplate控件模板

ControlTemplate 定义 控件模板用于来定义控件的外观、样式,还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 对与WPF当中,每个控件都是无外观的,这意味着我们可以完全自定义其可视元素的外观,但是不能修改其内部的行为&#xf…

Vue3.3 的 defineOptions 的使用,方便在 setup 语法糖中为组件命名和控制父子属性透传,包含在线运行实例欧

defineOptions 是 Vue3.3 的新的宏&#xff0c;可以通过 defineOptions 宏在 <script setup> 中使用选项式 API&#xff0c;也就是说可以在一个宏函数中设置 name, props, emits, render, 控制是否允许父子非 props 的属性透传等功能。 defineOptions 可以直接在 setup …

读AI新生:破解人机共存密码笔记10人类角色

1. 工作 1.1. 技术性失业问题 1.1.1. 约翰梅纳德凯恩斯&#xff08;John Maynard Keynes&#xff09;在其著名的文章《我们后代在经济上的可能前景》中提出了技术性失业问题 1.1.1.1. 他在1930年写了这篇文章&#xff0c;当时大萧条在英国造成了大规模失业 1.1.2. 那些反对…

驾照减分考试搜题软件?分享四个可以搜答案的软件 #其他#笔记#经验分享

大学生们可以通过使用搜题软件&#xff0c;快速找到自己遇到的问题的答案&#xff0c;提高学习效率&#xff0c;以下分享各类型的供大家学习。 1.彩虹搜题 这是个微信公众号 学生或者是成年人使用非常广的一款学习应用软件&#xff0c;里面包含了各行各业的海量题库&#xf…

FLASH仿真EEPROM---基于智芯Z20K11XM

一、介绍 电可擦和可编程只读存储器(EEPROM)可以对字节或字编程和擦除。EEPROM中的数据即使断电也能保持&#xff0c;但Z20K1xx芯片不含EEPROM。然而&#xff0c;闪存可以通过EEPROM仿真软件来模拟EEPROM。Z20K1xx包含两个flash阵列。编程和擦除操作可以在一个数组上进行&#…

AIGC发展方向和前景

引言 背景介绍 AIGC的定义及其发展历程 AIGC&#xff0c;即人工智能生成内容&#xff0c;是近年来在人工智能领域兴起的一项重要技术。它通过使用机器学习和深度学习等技术&#xff0c;使得计算机能够自动生成各种形式的数字内容&#xff0c;如文本、图像、音频和视频等。 …

【UIDynamic-动力学-UIAttachmentBehavior-附着行为-弹性附着 Objective-C语言】

一、弹性附着啊,我们来看一下, 1.刚才我们说了刚性附着,弹性附着,怎么着做啊,实际上,只需要多添加两个属性,就可以了, 实际上,添加一个,也可以啊, 我们把这个length,先注释掉, 先注释掉,self.attach.length = 100;这句话, 固定的长度啊,给它注释掉, 然后呢…

vue3中h函数的使用

h函数是用于创建一个 vnodes &#xff0c;它既可以用于创建原生元素&#xff0c;也可以创建组件&#xff0c;其渲染后的效果等同于使用模版语言来进行创建。 h函数的传参如下&#xff1a; // 完整参数签名 function h(type: string | Component,props?: object | null,child…

Docker配置国内镜像加速-2

Docker 官方镜像仓库&#xff08;如 Docker Hub&#xff09;可能由于网络原因&#xff0c;在某些地区或网络环境下下载速度较慢。使用镜像加速可以从距离用户更近、网络条件更好的镜像服务器获取镜像&#xff0c;从而显著提高下载速度&#xff0c;节省时间。 1.测试是否安装 d…

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

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引…

三维点云目标识别对抗攻击研究综述

源自&#xff1a;电子与信息学报 作者&#xff1a;刘伟权 郑世均 郭宇 王程 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 当前&#xff0c;人工智能系统在诸多领域都取得了巨大的成功&#xff0c;其中深度学…

TensorRT-LLM加速框架的基本使用

TensorRT-LLM是英伟达发布的针对大模型的加速框架&#xff0c;TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM 这个框架在0.8版本有一个比较大的更新&#xff0c;原先的逻辑被统一了&#xff0c;所以早期的版本就不介绍了…

告别繁琐代码,迈向编程新境界—Java集合与泛型全面解析

在Java编程的征途中&#xff0c;集合&#xff08;Collection&#xff09;与泛型&#xff08;Generics&#xff09;是两大里程碑式的特性&#xff0c;它们不仅极大地提升了代码的灵活性和安全性&#xff0c;还帮助开发者简化了数据结构的处理逻辑&#xff0c;让编程之旅变得更加…

Hadoop 2.0 大家族(四)

目录 七、Flume&#xff08;一&#xff09;Flume简介&#xff08;二&#xff09;Flume入门 八、Mahout&#xff08;一&#xff09;Mahout简介&#xff08;二&#xff09;Mahout入门 七、Flume Flume是一个分布式高性能、高可靠的数据传输工具&#xff0c;它可用简单的方式将不同…

Langchain实战:构建高效的知识问答系统

引言 知识问答系统&#xff08;KQA&#xff09;是自然语言处理领域的核心技术之一&#xff0c;它能够帮助用户从大量数据中快速准确地检索到所需信息。知识问答系统成为了帮助个人和企业快速获取、筛选和处理信息的重要工具。它们在很多领域都发挥着重要作用&#xff0c;例如在…

《计算机英语》Unit 1 Computer Overview 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译&#xff08;单词词组&#xff0c;参照课后习题&#xff09; 4、翻译2道&#xff08;一道原题&#xff0c;参照作业&#xff09; SectionA About Computer 关于计算机 algorithm n. 算法 operate v.…