测试|Selenium介绍及环境搭建

news2024/11/15 21:43:02

测试|Selenium介绍及环境搭建

1.Selenium是什么

Selenium是用来做web网站 UI自动化的测试工具/测试框架。

我们这里说的Selenium是Selenium2.0,它由Selenium IDE,Webdriver,

Selenium Grid组成。

Selenium IDE是用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能够回访,编辑和调试测试脚本。测试过程中可以逐步进行或调整执行速度,并且在底部浏览日志出错信息。

Webdriver可以跳出JS的环境沙箱,针对不同的浏览器创建更加健壮的分布式的跨平台的自动化测试脚本,基于特定语言(Java,python,js…)绑定驱动浏览器对web元素进行操作和验证。

Webdriver的工作原理:

  1. 启动浏览器后,selenium会把目标浏览器绑定到特定的端口,启动后的浏览器作为webdriver的远程服务器。
  2. 客户端,这里就是测试脚本,借助ComandExcutor发送http请求给server端,会以webdriver协议规定的json格式字符串告诉selenium我们希望浏览器接下来做什么
  3. 服务器端需要依赖原生的浏览器组件,转化web service命令为浏览器native调用来完成操作。

selenium grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息,可以实现同一时刻执行不同的测试脚本。

关于脚本和脚本语言,脚本语言和面向对象语言:

脚本script 其实就是短小的、用来让计算机自动化完成一系列工作的程序,类似演戏时用到的剧本。

脚本一般会用脚本语言进行书写,其中常见的脚本语言有python,js。

常见用途就是用来书写自动化测试脚本,在公司肯呢个会用脚本来自动检查平台代码部署异常情况,拉去异常情况警报,备份文件,批量处理日志等。

前端大部分语言都可以认为是脚本语言,因为他们主要用于网页上执行动态操作和交互,脚本语言是一种通过解释器逐行解释执行的编程语言。但并非所有比如TypeScript,前端框架Vue等

后端语言脚本语言包括PHP,Python,JS等。

脚本语言和面向对象语言是两种不同的编程范式,脚本语言是一种解释型语言,面向对象语言是一种编译型语言,脚本语言语法更灵活,数据结构和抽象方式更灵活,但是执行效率相对较低

关于沙箱:

环境沙箱是一种安全机制,用于隔离和限制应用程序或代码的执行环境,减少对系统的潜在危害。

限制资源访问,隔离环境,控制权限,检测和记录。

环境沙箱主要应用与不可信任的代码执行环境,比如网络浏览器,插件等,可以帮助保护用户隐私和安全,减少恶意代码的风险,并提供更安全的应用程序运行环境。

2.Selenium特点

  1. 支持各种浏览器,只需要下载对应的浏览器驱动即可
  2. 支持各种语言(python,Java,JS…)
  3. 支持各种平台
  4. 拥有丰富的API

3.Selenium原理

执行自动化脚本代码,就等于创建一个HTTP请求,webdriver浏览器接受请求并解析,并把解析后的结果发送给浏览器,操作浏览器执行测试步骤。

浏览器执行之后会把结果返回给httpserver,最后结果返回给脚本。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2QjOrYP-1690779236968)(F:\typora插图\image-20230731125109826.png)]

4.Selenium+Java环境搭建(使用chrome浏览器)

1.下载chrome浏览器,并查看chrome浏览器版本

2.下载chrome浏览器驱动,只需要前两个数相同即可。点击电脑对应的版本进行下载。chrome浏览器驱动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKUhpf9a-1690779236969)(F:\typora插图\image-20230731114903664.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BbAbC7qd-1690779236970)(F:\typora插图\image-20230731114919102.png)]

3.将压缩包解压,并放入java的文件夹下(已经给jdk配置过环境变量)

直接把exe放到java安装目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SysgIqOW-1690779236970)(F:\typora插图\image-20230731115516136.png)]

4.验证环境是否搭建成功

1.创建maven项目,向pom文件添加selenium依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJoiS9TT-1690779236971)(F:\typora插图\image-20230731120730889.png)]

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
</dependencies>

注:这里是selenium3不是4

2.编写代码运行

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Main {
    public static void main(String[] args) {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
    }
}

看到下边两个效果即环境搭建完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jL2elA4M-1690779236971)(F:\typora插图\image-20230731123539005.png)]
其中这里的启动端口是不确定的在这里插入图片描述

常见问题及解决办法:

1.浏览器版本与驱动版本问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qiAUxTle-1690779236972)(F:\typora插图\image-20230731122027654.png)]

原因:浏览器版本与驱动版本不匹配,重新在官网下载对应版本

2.selenium找不到Chrome.exe的安装路径

解决办法:检查chrome浏览器是否默认安装在C盘。若不在,则使用绝对路径。

ChromeDriver driver = new ChromeDriver("xxxxx);

因为我是安装在c盘下,所以不需要写绝对路径。

3.环境变量未配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q0OjDeck-1690779236972)(F:\typora插图\image-20230731123222200.png)]

解决办法:给jdk添加系统环境变量,并将驱动放入jdk的bin目录下

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

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

相关文章

小程序反馈与投诉混淆官方修改指引

根据《微信小程序平台运营规范》5.14“混淆行为&#xff1a;5.14.1 恶意混淆腾讯官方功能”&#xff0c;相关违规类型包括但不限于以下类型。 官方“反馈与投诉”入口与样式&#xff1a; 违规类型1&#xff1a;混淆官方投诉入口 小程序中的投诉入口样式与官方投诉入口icon名称…

边缘检测(Canny算子)实现原理

当前,边缘检测算法在实际应用中越加广泛,技术趋势也是快速发展,热火朝天。很多朋友或多或少了解,需要实现各类功能,尤其是一些复杂的需求,实现更好的滤波、满足更佳的提取效果,一时半会儿无从下手。 下面小编就带大家了解关于边缘检测算子的实现原理。由于边缘检测算子常…

相约脑暴会,共创大未来——动态实时三维人体重建脑暴会

今夏我们召集江湖中的有识之士&#xff0c;共同探讨动态实时三维人体重建制作容积视频的方案&#xff0c;展开一场别开生面的脑暴会。在此&#xff0c;我们向全球开发者发出诚挚邀请&#xff0c;邀请您加入我们周三&#xff08;8月2日&#xff09;晚上八点通过腾讯会议进行的脑…

多重背包二进制优化

可以将混合背包看作是一个特殊的多重背包&#xff0c;只要转化一下即可&#xff0c;将s-1转为1s0转化为m/v(最大可能装下的货物); 二进制优化的精髓就在于选择物品的次数&#xff0c;比如有s7&#xff0c;我们可以分为1&#xff0c;2 &#xff0c;4(二进制形式),1就代表选择一个…

HTTP协议+GET/POST区别

1. web开发流程 &#xff08;1&#xff09; HTML、CSS、JS、图片等资源通过浏览器进行整合&#xff0c;最终渲染出所需画面。 &#xff08;2&#xff09;浏览器对Web服务器进行资源请求 浏览器通过url请求资源。【HTTP协议、URL&#xff1a;确定唯一的一个资源】 浏览器请求…

DeepVO 论文阅读

论文信息 题目&#xff1a;DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks 作者&#xff1a;Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni 代码地址&#xff1a;http://senwang.gitlab.io/DeepVO/ (原作者并没有开源…

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分&#xff0c;嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

备战携程面试:Redis Master-Slave异步同步进度独家解析!

Hello 大家好&#xff0c;我是你们的小米&#xff01;今天我要和大家分享一道来自携程的面试题&#xff1a;Redis Master-Slave异步同步的话怎么判断Slave同步进度&#xff1f; Redis&#xff0c;作为一款非常火热的内存数据库&#xff0c;提供了Master-Slave的异步复制机制&a…

什么是嵌入式软件开发?

嵌入式软件一般是在交叉的开发环境下进行的&#xff0c;这样的运行环境能够让软件开发过程中更加稳定、可靠和安全&#xff0c;在很大程度上提升了软件开发的质量和效率&#xff0c;同时也使得软件开发的难度和程度大大降低。 嵌入式软件的交叉开发环境&#xff0c;反映了用于…

【数据结构篇C++实现】- 特殊的线性表 - 串

友情链接&#xff1a;C/C系列系统学习目录 文章目录 串&#x1f680;一、串的定义&#x1f680;二、串的存储结构&#x1f6f4;&#xff08;一&#xff09;串的顺序存储结构1、定长顺序存储表示2、堆分配存储表示 &#x1f6f4;&#xff08;二&#xff09;串的链式存储结构3、块…

ES6 - Iterator迭代器和for...of 循环

文章目录 前言一、Iterator介绍二、Iterator原理三、实现Iterator接口的原生对象有五、默认调用 Iterator 接口的场合六&#xff0c;for... of 循环七&#xff0c;总结 前言 JavaScript 原有的表示“集合”的数据结构&#xff0c;主要是数组&#xff08;Array&#xff09;和对…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十二天 42/50【unordered_set】【双指针处理连续】【翻转字符串】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

优思学院|企业遇到瓶颈期怎么办?六西格玛管用吗?

企业遇到瓶颈期应该分析一下原因&#xff0c;企业内部应该和各级一起思考如何解决、如何舒缓&#xff0c;即使找管理咨询公司同样也是这样做的&#xff0c;关键是企业是否连一个领导者也没有呢&#xff1f; 企业每天都会遇到新的问题&#xff0c;是否每次都要找管理咨询公司&a…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式&#xff0c;分别为&#xff1a;1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐&#xff0c;需要手动配置yaml文件&#xff0c;特别是需要配置pvc相关内容时&#xff0c;涉及到的yaml文件太…

iOS--frame和bounds

坐标系 首先&#xff0c;我们来看一下iOS特有的坐标系&#xff0c;在iOS坐标系中以左上角为坐标原点&#xff0c;往右为X正方向&#xff0c;往下是Y正方向如下图&#xff1a; bounds和frame都是属于CGRect类型的结构体&#xff0c;系统的定义如下&#xff0c;包含一个CGPoint…

卡片布局 可左右上删除,可向下拉出上一个 支持复用

效果 支持左右上 三个方向删除内容&#xff0c;支持下拉显示上一个。支持adapter 支持复用。 使用 myLayout.setAdapter(new StackAdapter() {final int[] bgColorsnew int[]{Color.RED,Color.GREEN,Color.BLUE};Overridepublic View getView(int position, LayoutInflater …

Docker Hub和镜像仓库

目录 前言 创建存储库 推送镜像&#xff08;可选&#xff09; 搜索镜像 拉取镜像 前言 Docker Hub 是 Docker 公司提供的官方公共 Docker 镜像注册表&#xff0c;允许用户存储、分享和获取 Docker 镜像。在 Docker Hub 上&#xff0c;你可以找到许多官方和社区维护的 D…

三、前端高德地图、测量两个点之前的距离

点击测距工具可以开启测量&#xff0c;再次点击关闭测量&#xff0c;清除地图上的点、连线、文字 再次点击测量工具的时候清除。 首先 上面的功能条河下面的地图我搞成了两个组件&#xff0c;他们作为兄弟组件存在&#xff0c;所以简单用js写了个事件监听触发的对象&#xff…

JavaScript三元运算符

条件运算符&#xff08;三元运算符&#xff09;的基本结构 条件 &#xff1f; true:false例如&#xff1a; const age 20; age > 18 ? console.log("你已经成年了"):console.log("你还是一个孩子&#xff01;");我们这里把条件运算符和IF来做个区分…

高等数学中如何求间断点

高等数学中求间断点是一项重要的技巧&#xff0c;特别适用于分析函数的性质和图像的特征。在本文中&#xff0c;我们将深入探讨如何在给定函数中找到间断点&#xff0c;并解释其数学原理和实际应用。 什么是间断点&#xff1f; 在高等数学中&#xff0c;间断点是指函数在某个点…