测试|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.mzph.cn/news/17520.shtml

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

相关文章

云计算——云计算关键技术

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.云计算关键技术 1.虚拟化技术 2.分布式数据存储技术 &#xff08;1&…

ubuntu 相关命令记录

检查ssh 是否可用 ssh 安装curl apt install curl 进入root 进入root 账号 sudo -i 修改密码 sodo passwd 开启root 可远程连接 修改SSH配置文件 可以通过SSH配置文件更改包括端口、是否允许root登录等设置&#xff0c;配置文件位置&#xff1a; /etc/ssh/sshd_config…

天下风云出我辈,AI准独角兽实在智能获评“十大数字经济风云企业

时值盛夏&#xff0c;各地全力拼经济的氛围同样热火朝天。在浙江省经济强区余杭区这片创业热土上&#xff0c;人工智能助力数字经济建设正焕发出蓬勃生机。 7月28日&#xff0c;经专家评审、公开投票&#xff0c;由中共杭州市余杭区委组织部&#xff08;区委两新工委&#xff…

如何解决制造业数字化改造的障碍?

制造业的数字化转型可能是一个复杂且具有挑战性的过程&#xff0c;但解决以下障碍有助于为成功实施铺平道路&#xff1a; 抵制变革&#xff1a;数字化转型中最常见的挑战之一是员工的抵制&#xff0c;尤其是那些习惯传统方法的员工。为了克服这一问题&#xff0c;组织需要培养一…

JDBC-笔记

JDBC 1. JDBC介绍 JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于连接和操作数据库的 Java API。 通过Java操作数据库的流程 第一步&#xff1a;编写Java代码 第二步&#xff1a;Java代码将SQL发送到MySQL服务端 第三步&#xff1a;MySQL服务端接收到SQ…

Spring中IOC容器常用的接口和具体的实现类

在Spring框架没有出现之前&#xff0c;在Java语言中&#xff0c;程序员们创建对象一般都是通过关键字new来完成&#xff0c;那时流行一句话“万物即可new&#xff0c;包括女朋友”。但是这种创建对象的方式维护成本很高&#xff0c;而且对于类之间的相互关联关系很不友好。鉴于…

获取安卓模拟器截图

最简单的方法当然是使用adb adb shell screencap -p >screenshot.png 不过有些app会限制adb进行截图&#xff0c;这个时候adb截屏为黑屏 此时有两种方法获取截图 第一使用模拟器自带截图快捷键,获取安卓自带截图键&#xff0c;逍遥模拟器为altF3 可模拟键盘输入按键&#…

OnTrigger的几种情况

在Unity中&#xff0c;OnTrigger是一种用于处理碰撞事件的函数。它通常用于监测对象之间的触发器&#xff08;Collider&#xff09;交互&#xff0c;并在特定的情况下触发相应的逻辑。在Unity中&#xff0c;有以下几种类型的OnTrigger事件&#xff1a;OnTriggerEnter、OnTrigge…

【Web】web

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层——传输层——网络层——数据链路层——物理层 每一定的台主机都有一个唯一且固定的地址标识——IP地址 IP地址的做用&#xff1a;1.区分用户和计算机&#xff1b;2.进行通信 IP地址由32位二进制数组成&#xff0c;…

chatGPT——如何和一个很可爱,思维比较跳跃 ,活泼的女孩聊天

和一个可爱、思维跳跃、活泼的女孩聊天可以是一种很有趣的体验。以下是一些建议&#xff0c;帮助你在对话中保持积极、轻松和有趣的氛围&#xff1a; 用幽默感&#xff1a;幽默是促进轻松气氛的有效方式。适时地开玩笑&#xff0c;但要确保不会伤害对方感情或触及敏感话题。笑话…

读取application-dev.properties的中文乱码【bug】

读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…

ATFX汇市月报:7月美联储坚定加息,8月成利率决议空档期

7月汇市行情回顾—— 7月份&#xff0c;美元指数下跌1.01%&#xff0c;收盘在101.88点&#xff0c; 欧元升值0.76%&#xff0c;收盘价1.0997点&#xff1b; 日元升值1.41%&#xff0c;收盘价142.27点&#xff1b; 英镑升值1.08%&#xff0c;收盘价1.2835点&#xff1b; 瑞…

TSINGSEE青犀视频AI算法引擎中台在渣土车智慧管控场景中的应用

一、行业背景 随着社会的发展和人们生活水平的不断进步&#xff0c;大家对环境卫生和空气质量的要求越来越重视。渣土车是建筑垃圾的运输主力&#xff0c;也存在行驶频繁、不合规、不合法的操作&#xff0c;可能对交通安全、环境卫生和城市形象造成影响。比如在施工工地&#x…

基于MATLAB实现图像处理常用应用案例(附上100个仿真源码+数据)

MATLAB是一款功能强大的图像处理软件&#xff0c;可以用于实现各种常见的图像处理应用。下面将介绍几个常见的图像处理应用案例。 文章目录 1. 图像去噪2. 图像增强3. 图像分割4. 特征提取5. 图像拼接6. 完整源码数据下载 1. 图像去噪 图像去噪是图像处理中的一项重要任务&am…

STM32 中断优先级管理(二)

NVIC中断管理相关函数主要在HAL库关键文件stm32f1xx_hal_cortex.c中定义。 中断优先级分组函数 void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);这个函数的作用是对中断的优先级进行分组&#xff0c;这个函数在系统中只需要被调用一次。 void HAL_NVIC_SetPrio…

【C++】C/C++内存管理

1、C/C内存分布 【1】栈又叫堆栈 – 非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。 【2】内存映射段 – 是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存&#xff0c;做进程间通信 【3】堆 – 用于程序运…

Java面向对象的三大特征

Java面向对象的三大特征 java面向对象的三大特征&#xff1a;“封装、继承、多态”。更多Java技术知识&#xff0c;请登陆疯狂软件教育官网。微信搜索微信号&#xff1a;疯狂软件&#xff0c;参加2015年优惠活动&#xff0c;有机会获得优惠劵和代金劵。 以本文为例&#xff0c…

系统架构师---开发方法

前言&#xff1a; 软件开发方法是软件开发的方法学、自从“软件危机”爆发以来&#xff0c;软件研究人员就在对开发方法进行不断的研究&#xff0c;以期待能够提高软件的质量、降低软件的成本。经过40多年的研究&#xff0c;人们提出了 很多的开发方法&#xff0c;如最初的结构…

等待唤醒机制和线程池

进程间的通信&#xff1a;多个线程在处理同一个资源&#xff0c;但是处理的动作&#xff08;线程的动作&#xff09;却不相同。 进程间的通信可以让资源进行有效的利用 等待唤醒中的方法&#xff1a; wait &#xff1a;让线程进入等待状态notify &#xff1a;随机唤醒一个线…

百分点科技参编信通院《数据中台实践指南(1.0版)》

日前&#xff0c;在大数据产业发展大会上&#xff0c;百分点科技参与编写的《数据中台实践指南&#xff08;1.0版&#xff09;》正式发布&#xff0c;该指南由中国信息通信研究院大数据技术标准推进委员会指导和组织&#xff0c;百分点科技、阿里云、中国移动、中国联通、交通银…