测试|Selenium介绍及环境搭建

测试|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.mfbz.cn/a/55557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

主流开源监控系统一览

减少故障有两个层面的意思&#xff0c;一个是做好常态预防&#xff0c;不让故障发生&#xff1b;另一个是如果故障发生&#xff0c;要能尽快止损&#xff0c;减少故障时长。而监控的典型作用&#xff0c;就是帮助我们发现及定位故障&#xff0c;这两个环节对于减少故障时长至关…

使用vscode进行远程开发服务器配置

1.下载vscode 2.给vscode 安装python 和 remote ssh插件 remote—SSH扩展允许您使用任何具有SSH服务器的远程机器作为您的开发环境。 3.安装remote-SSH插件之后&#xff0c;vscode左侧出现电脑图标&#xff0c;即为远程服务&#xff0c;按图依次点击&#xff0c;进行服务器配置…

Redis-基于内存的key-value结构数据库

读写性高&#xff0c;适合存储热点性高的数据 也称为结构化的NoSql数据库 redis依赖环境&#xff1a;gcc NoSql 非关系型数据库&#xff0c;是关系型数据库的补充 关系型(RDBMS)非关系型(NoSql)MySqlRedisOracleMongo dbDB2MemCachedSQLServer 常用命令 Redis 教程_redi…

机器学习深入浅出

机器学习是一种人工智能的分支&#xff0c;它使用算法和数学模型来让计算机自主学习数据并做出预测和决策。这种技术正在被广泛应用于各种领域&#xff0c;包括自然语言处理、计算机视觉、语音识别、医学诊断和金融预测等。在本篇博客中&#xff0c;我们将介绍机器学习的基本概…

踩坑(5)整合kafka 报错 java.net.UnknownHostException: 不知道这样的主机

java.net.UnknownHostException: 不知道这样的主机。 (5c0c3c629db9)at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:933) ~[na:na]at java.ba…

【Spring Boot】请求参数传json对象,后端采用(pojo)CRUD案例(102)

请求参数传json对象&#xff0c;后端采用&#xff08;pojo&#xff09;接受的前提条件&#xff1a; 1.Spring Boot 的启动类加注解&#xff1a;EnableWebMvc 2.Spring Boot 的控制层接受参数采用&#xff1a;RequestBody Spring Boot 启动类&#xff1a;加注解&#xff1a;En…

论文阅读 - Few-shot Network Anomaly Detection via Cross-network Meta-learning

论文链接&#xff1a;https://arxiv.org/pdf/2102.11165.pdf 目录 摘要&#xff1a; 引言 问题定义 方法 Graph Deviation Networks Cross-network Meta-learning 摘要&#xff1a; 网络异常检测旨在找到与绝大多数行为显着不同的网络元素&#xff08;例如节点、边、子图…

数字化失败最关键原因是是老板问题,技术问题还是产品问题?

大家都知道失败率高达80%&#xff0c;这太夸张了&#xff0c;ERP导入都没有这个失败率&#xff0c;那到底为什么呢&#xff1f;​ 数字化失败的最关键原因可能因具体环境和情况而异。题主提到的每个因素&#xff08;老板问题、技术问题和产品问题&#xff09;都可能以不同的方…

Java三大特征之继承【超详细】

文章目录 一、继承概念二、继承的语法三、父类成员访问3.1子类中访问父类的成员变量3.2子类和父类成员变量同名3.3子类中访问父类的成员方法 四、super关键字五、子类构造方法六、super和this七、再谈初始化八、protected 关键字九、继承方式十、final 关键字十一、继承与组合 …

IntelliJ IDEA快捷键大全 + 动图演示!

一、构建/编译 Ctrl F9&#xff1a;构建项目该快捷键&#xff0c;等同于菜单【Build】—>【Build Project】 执行该命令后&#xff0c;IntelliJ IDEA 会编译项目中所有类&#xff0c;并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建&#xff0c;会在上次构建的基…

GC 深入(小白,对gc有一个进一步的了解)

垃圾回收器的搭配 一般固定 一般这年轻代垃圾回收器&#xff0c;老年代垃圾回收器&#xff0c;如上图搭配着使用 1.8呢默认就是最后边那哥俩 jvm调优 一个就是增加吞吐量 一个就是减少STW的时间。 三色标记算法&#xff08;理解根可达算法&#xff09; 并发的可达性分析 有…

Nacos配置中心设置Mongodb

目录 1.common模块导入nacos config依赖 2.common模块新建bootstrap.yaml 3.在自己的模块导入common模块依赖 4.打开nacos新建配置&#xff0c;发布 5.运行服务并测试 效果&#xff1a;在部署完成后&#xff0c;其他人可以自动连接到你本地mongoDB数据库&#xff0c;无需再…

小程序原生实现左右锚点联动

效果 wxml <view classbox><scroll-view scroll-y scroll-with-animation style"width:25%"><view classnav><view wx:for"{{navList}}" wx:keyindex class"title {{index active ?select:}}"data-index{{index}} bin…

Day02-作业(JavaScriptVue)

作业1&#xff1a;实现5秒之后&#xff0c;当前页面直接跳转到官网首页&#xff08;首页地址&#xff1a;https://www.itcast.cn&#xff09; 提示&#xff1a; 5秒之后&#xff0c;才触发某一个动作 素材&#xff1a; <!DOCTYPE html> <html lang"en"&g…

基于Amoeba读写分离(三十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、实验&#xff1a; 总结 前言 今天要学的是基于Amoeba读写分离。Amoeba是一个开源的关系型数据库管理系统&#xff0c;它支持读写分离的架构。在Amoe…

使用DeferredResult来设计异步接口

文章目录 DeferredResult 介绍思路Demo搭建1.定义一个抽象的请求体2.定义一个接口返回体3.定义一个接口请求体继承抽象类AsynTaskBaseRequest<T<T>>4.定义seveice类&#xff0c;并声明一个异步方法&#xff08;Async注解&#xff09;5.定义一个返回DeferredResult的…

一篇文章带你搞懂Java多态的概念、优点、实现多态的方式、以及不同方式的区别

一篇文章带你搞懂Java多态的概念、优点、使用场景 基本概念 ​ **多态&#xff08;Polymorphism&#xff09;是面向对象编程的一个重要特性&#xff0c;它指的是同一个行为具有多个不同表现形式或形态的能力。**它允许我们使用父类的引用变量来引用子类的对象&#xff0c;并根…

SpringBoot第29讲:SpringBoot集成MySQL - MyBatis-Plus代码自动生成

SpringBoot第29讲&#xff1a;SpringBoot集成MySQL - MyBatis-Plus代码自动生成 本文是SpringBoot第29讲&#xff0c;主要介绍 MyBatis-Plus代码自动生成&#xff0c;以及产生此类代码生成工具的背景和此类工具的基本实现原理。 文章目录 SpringBoot第29讲&#xff1a;SpringBo…

STM32(HAL)串口中断接收

目录 1、简介 2 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 1、简介 本文对HAL串口中断函数进行介绍。 2 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 首先在main.c文件中进行…

一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql

一套AI医疗模式的医院智慧导诊系统源码 相关技术&#xff1a; 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 开发语言&#xff1a;java 开发工具&#xff1a;IDEA 前端框架&#xff1a;Uniapp 后端框架&#xff1a;springboot 数 据 库&#xff1a;mys…