【Kotlin基于selenium实现自动化测试】初识selenium以及搭建项目基本骨架(1)
导读大纲
- 1.1 Java: Selenium 首选语言
- 1.2 配置一个强大的开发环境
1.1 Java: Selenium 首选语言
-
Java 是开发人员和测试人员进行自动化 Web 测试的首选
- Java 和 Selenium 之间的协同作用受到各种因素的驱动,从而提高它们的有效性
-
为什么Java经常被认为是Selenium的首选语言
- 广泛流行和采用/庞大的用户群
- Java 是使用最广泛的编程语言之一
- 这种广泛采用意味着大量开发人员和测试人员都熟悉 Java
- 从而为 Selenium 项目中的协作和知识共享提供便利
- 面向对象编程(OOP)/可复用性和可维护性
- Java 的面向对象特性与 Selenium 的架构非常吻合
- 封装、继承和多态性等面向对象编程原则
- 可以创建可重用和可维护的测试脚本,这对测试自动化至关重要
- 强大的标准库/丰富的 API 集
- Java 提供一套全面的标准库,可让 Selenium 自动化脚本受益匪浅
- 这些库提供处理文件系统、数据库、网络等的功能
- 从而增强 Selenium 测试的能力
- 跨平台兼容性/平台独立性
- Java 的平台独立性是其一大优势
- 用 Java 编写的测试脚本无需修改即可在不同的操作系统上执行
- 与 Selenium 的跨浏览器和跨平台测试能力相一致
- 强大的社区和生态系统/广泛的资源和支持
- 强大的 Java 社区提供广泛的支持,包括论坛、教程和文档
- 这使得使用 Selenium 和 Java 的人员更容易排除故障和学习
- 与其他工具集成/与测试框架兼容
- Java 与 JUnit 和 TestNG 等流行的测试框架集成良好
- Selenium 通常使用这些框架
- 来组织测试、生成报告和管理测试用例和套件
- 成熟的开发工具/先进的集成开发环境
- Java 有强大的集成开发环境(IDE)支持,如 Eclipse 和 IDEA
- 这些集成开发环境提供高级编码功能、调试和测试功能
- 有利于开发和维护 Selenium 测试脚本
- 稳定性和可靠性/久经考验的记录
- Java 在各个领域的稳定性和可靠性由来已久
- 这种稳定性在测试自动化中至关重要
- 因为测试脚本的一致和可靠执行是关键所在
强大的自动化生态系统/丰富的库和框架- Java 的生态系统包括众多可增强和简化 Selenium 自动化的库和框架
- 这些工具可以大大减少编写和维护测试脚本的工作量和复杂性
- 广泛流行和采用/庞大的用户群
-
Java 的
面向对象特性、广泛的使用、强大的库支持、平台独立性和强大的生态系统- 使其成为 Selenium 的理想语言
-
Java符合基于 Selenium 的自动化技术要求
- 为开发复杂、高效的测试自动化套件提供稳定、可扩展的环境
1.2 配置一个强大的开发环境
-
设置和掌握Java、IDEA 和Selenium WebDriver的集成技术
- 重点是配置一个强大的开发环境
-
首先,需要安装 Java,为测试脚本奠定强大的编程语言基础
- 选择最适合测试项目的 JDK 版本
- Oracle JDK
- 选择并点击与您的操作系统(Windows、macOS 或 Linux)相对应的下载链接
- 接受 Oracle Java SE 的 Oracle 技术网络许可协议.
- 点击可执行文件的下载链接
- 无论是 Windows 的 .exe、macOS 的 .dmg 还是 Linux 的 .tar.gz.
- 运行安装程序
- Windows
- 双击下载的 .exe 文件,然后按照提示进行安装
- 您可以选择安装 JDK 的目录
- macOS(手动安装)
- 打开 .dmg 文件并按照说明操作
- 通常需要将 JDK 拖入"Applications"文件夹
- Linux
- 通过图形文件管理器或使用 tar -xzf [filename] 命令行
- 将 .tar.gz 文件解压缩到所需位置
- 通过图形文件管理器或使用 tar -xzf [filename] 命令行
- Windows
- 设置环境变量
- 在 Windows 中, 执行以下操作
在 "系统变量"中,单击"新建"创建一个新的 JAVA_HOME 变量- 并将其值设置为 JDK 安装路径
在 "系统变量"中找到"Path"变量- 然后单击"编辑"添加一个新条目,内容为 %JAVA_HOME%\bin
- 在 macOS 和 Linux 中,请执行以下操作.
- 打开终端,键入 vi ~/.bashrc 或 vim ~/.bashrc
- 添加一行"export JAVA_HOME=/usr/lib/jvm/jdk-11"
- 将 Java 二进制目录添加到 PATH 变量中
- export PATH=$JAVA_HOME/bin:$PATH
- 这一步可确保从命令行访问 Java 二进制文件
- 保存文件并重新加载你的配置文件
- 例如,运行 source ~/.bashrc
- 打开终端,键入 vi ~/.bashrc 或 vim ~/.bashrc
- 在 Windows 中, 执行以下操作
- 检查 Java 版本以验证安装
- 在终端中键入 javac --version 并按 Enter

- 在终端中键入 javac --version 并按 Enter
- 选择最适合测试项目的 JDK 版本
-
接着, 安装 IDEA 集成开发工具
- IDEA
-
然后安装 Selenium
- 下载 Selenium WebDriver Java 客户端
- 在maven中央仓库搜索依赖包

- 下载对应浏览器的Selenium WebDriver
- Google Chrome
- Mozilla Firefox
- Microsoft edge
- Apple Safari
- Opera
- Internet Eexplorer
- 每个 WebDriver 都允许Selenium 与相应的浏览器进行交互
- 从而实现自动化测试
-
在 IDEA 中创建新 Kotlin 项目

-
将 Selenium JAR 添加到项目中(手动添加Selenium依赖包)
- 将下载的 ZIP 文件解压缩到计算机上的文件夹中
- 右键项目目录, 打开"Project Structure"

- 选择"Libraries"–>“点击+”–>“选择Java”–>“选择刚才解压缩的目录”

-
通过 Gradle 配置来添加 Selenium 依赖
- 使用该方式则
无需手动下载 Selenium JAR 包
- 使用该方式则
// ================== build.gradle.kts
dependencies {implementation("org.seleniumhq.selenium:selenium-chrome-driver:4.25.0")implementation("org.seleniumhq.selenium:selenium-java:4.25.0")testImplementation(kotlin("test"))
}
- 创建一个简单的测试脚本来验证配置是否正确
- 右键kotlin目录, 创建一个包"kt.selenium"

- 在"kt.selenium"包下创建一个"Main.kt"的kotlin文件

- 右键kotlin目录, 创建一个包"kt.selenium"
package kt.selenium
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
fun main() {// 初始化一个 ChromeDriver 实例val driver: WebDriver = ChromeDriver()// 在浏览器中打开百度driver.get("https://www.baidu.com")// 关闭浏览器driver.quit()
}
相关文章:
【Kotlin基于selenium实现自动化测试】初识selenium以及搭建项目基本骨架(1)
导读大纲 1.1 Java: Selenium 首选语言1.2 配置一个强大的开发环境 1.1 Java: Selenium 首选语言 Java 是开发人员和测试人员进行自动化 Web 测试的首选 Java 和 Selenium 之间的协同作用受到各种因素的驱动,从而提高它们的有效性 为什么Java经常被认为是Selenium的首选语言 广…...
汽车追尾为什么是后车的责任?
简单点说:因为人后面没有长眼睛。 结论 在汽车追尾事故中,通常情况下后车被认为是责任方的原因在于交通法规对驾驶安全标准的约定和实践中的责任识别原则。虽然追尾事故常见地被归责于后车,但具体判断并不是绝对的,仍需综合多种…...
[运维]4.bookinfo无法部署的问题
为了拉取镜像,搭建了阿里云镜像仓库,教程见:K8S中基于NFS-Subdir-External-Provisioner存储组件实现的StorageClass-CSDN博客 但是bookinfo的ratings和productpage无法运行,部署后显示crashLoopBackOff [rootmaster ~]# kubectl…...
ACT调试pycharm报错
在运行ACT 代码时,根据官方readme使用命令行需要在wandb选择的时候输入3 但是,使用pycharm运行的时候会报错 wandb.errors.UsageError: api_key not configured (no-tty). call wandb.login(key[your_api_key]) 网上搜索都是说要注册什么key…...
记一次控件提升后,运行却不显示的Bug
.h文件 #ifndef VOLUMETOOLBTN_H #define VOLUMETOOLBTN_H#include <QToolButton> #include <memory>class VolumeToolBtn : public QToolButton { Q_OBJECTpublic:explicit VolumeToolBtn(QWidget *parent nullptr);~VolumeToolBtn() override;void initUi(); p…...
关于深度学习torch的环境配置问题
已经下好了torch在虚拟环境中,结果在ipynb文件中无法运行 后来在终端直接用python语句编译 发现没有问题 在编辑测试py文件 发现runcode有问题 原来是插件默认base环境 具体操作参考VS Code插件Code Runner使用python虚拟环境_coderunner怎么在虚拟环境中使用-CSD…...
Linux工具的使用——yum和vim的理解和使用
目录 linux工具的使用1.linux软件包管理器yum1.1yum的背景了解关于yum的拓展 1.2yum的使用 2.Linux编辑器-vim使用2.1vim的基本概念2.2vim的基本操作2.3命令模式命令集2.3.1关于光标的命令:2.3.2关于复制粘贴的命令2.3.3关于删除的命令2.3.4关于文本编辑的命令 2.4插…...
websockets库使用(基于Python)
主要参考资料: 【Python】websockets库的介绍及用法: https://blog.csdn.net/qq_53871375/article/details/135920231 python模块websockets,浏览器与服务器之间的双向通信: https://blog.csdn.net/randy521520/article/details/134752051 目录 websocke…...
Electron 主进程与渲染进程、预加载preload.js
在 Electron 中,主要控制两类进程: 主进程 、 渲染进程 。 Electron 应⽤的结构如下图: 如果需要更深入的了解electron进程,可以访问官网 流程模型 文档。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用…...
鸿蒙harmonyos next纯flutter开发环境搭建
公司app是用纯flutter开发的,目前支持android和iOS,后续估计也会支持鸿蒙harmonyos。目前谷歌flutter并没有支持咱们国产手机操作系统鸿蒙harmonyos,于是乎国内有个叫OpenHarmony-SIG的组织,去做了鸿蒙harmonyos适配flutter开发的…...
【学习资源】人在环路的机器学习
说明:本文图片和内容来源 Human-in-the-Loop Machine Learning Human-in-the-Loop Machine Learning Active learning and annotation for human-centered AI by Robert (Munro) Monarch, June 2021 介绍Human-in-the-Loop的目标,学习过程,…...
计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python+Django+Vue 可视化大屏 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
031集——文本文件按空格分行——C#学习笔记
如下图,读取每行文本,每行文本再按空格分开读取一个字符串,输出到另一个文本: CAD环境下,代码如下: using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…...
LabVIEW 成绩统计系统
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
SpringBoot技术栈:构建高效古典舞交流平台
第二章 相关技术介绍 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译…...
Docker 容器日志记录与管理:日志输出、轮转与配置实践
Docker 容器化应用的日志管理是运维中的重要环节。容器默认会将标准输出(stdout)和标准错误(stderr)记录到日志文件中,但这些日志文件如果不加管理,可能会无限制地增长,最终导致磁盘空间耗尽。因此,了解如何规范化容器日志管理、配置日志轮转策略以及合理存储位置至关重…...
Django学习笔记一:MVT的示例
Django的MVT(Model-View-Template)架构是一种将应用程序的不同部分分离的方法,旨在提高代码的可维护性和可扩展性。MVT将应用分解为三个主要部分:Model(模型)、View(视图)和Template…...
集合框架01:集合的概念、Collection体系、Collection接口
1.集合的概念 集合是对象的容器,定义了多个对象进行操作的常用方法。可实现数组的功能。 集合和数组的区别: 1.数组长度固定,集合长度不固定; 2.数组可以存储基本类型和引用类型,集合只能存储引用类型; …...
shadcn-vue 快速开始
介绍 基于 Radix Vue 和 Tailwind CSS 构建的可重复使用的组件 一个由社区主导的非官方 Vue 版本的 shadcn/ui。虽然我们与 shadcn 没有正式的合作或联系,但在开始这个项目之前得到了作者本人的同意。创建这个项目的原因是 Vue 生态系统中缺乏类似的项目ÿ…...
智慧管控平台技术解决方案
1. 智慧管控平台概述 智慧管控平台采用先进的AI技术,围绕一个中心和四大应用构建,旨在打造一个智能、共享、高效的智慧运营管理环境,实现绿色节能和业务创新。 2. 平台架构设计 系统整体架构设计包括统一门户管理、IOT平台、大数据、视频云…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀” 在JavaScript中,我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时,单纯依赖字符串或数组就显得力不从心了。这时ÿ…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
