test ui-01-UI 测试组件之 Selenium 入门介绍

Selenium 浏览器自动化项目

Selenium 是一个涵盖多种工具和库的项目,旨在支持和实现对 Web 浏览器的自动化。

它提供了扩展来模拟用户与浏览器的交互,一个用于扩展浏览器分配的分发服务器,以及符合 W3C WebDriver 规范的基础设施,使您能够为所有主要的 Web 浏览器编写可互换的代码。

这个项目得以实现,得益于那些自愿贡献的志愿者,他们投入了数千小时的个人时间,并将源代码免费提供给任何人使用、享受和改进。

Selenium 将浏览器供应商、工程师和热衷者聚集在一起,促进了关于 Web 平台自动化的开放讨论。该项目每年都会组织一次会议,以教授和培养社区。

在 Selenium 的核心是 WebDriver,它是一个编写指令集的接口,可以在许多浏览器中互换运行。

一旦您安装好一切,只需几行代码,您就可以进入浏览器。

您可以在《编写您的第一个 Selenium 脚本》中找到更详细的示例。

java 例子

package dev.selenium.hello;import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class HelloSelenium {public static void main(String[] args) {WebDriver driver = new ChromeDriver();driver.get("https://selenium.dev");driver.quit();}
}

入门指南

如果您是初次接触 Selenium,我们有一些资源可以帮助您立即掌握要领。

Selenium 支持通过 WebDriver 实现对市场上所有主要浏览器的自动化。

WebDriver 是一个 API 和协议,定义了一种与控制 Web 浏览器行为的语言无关的接口。

每个浏览器都由一个特定的 WebDriver 实现支持,称为驱动程序。驱动程序是将指令传递给浏览器并处理 Selenium 与浏览器之间通信的组件。

这种分离是有意为之的,目的是让浏览器供应商对其浏览器的实现负责。Selenium 尽可能利用这些第三方驱动程序,但也为那些这不是现实的情况提供了由项目维护的自己的驱动程序。

Selenium 框架通过用户界面将所有这些部分联系在一起,使不同的浏览器后端能够透明地使用,实现跨浏览器和跨平台的自动化。

Selenium 的设置与其他商业工具的设置非常不同。在您可以开始编写 Selenium 代码之前,您必须安装所选语言的语言绑定库、要使用的浏览器以及该浏览器的驱动程序。

请按以下链接了解如何使用 Selenium WebDriver。

如果您想使用低代码/录制和回放工具开始,请查看 Selenium IDE。

一旦您使一切正常运行,如果您想扩大测试范围,请查看 Selenium Grid。

安装 lib

设置您喜欢的编程语言的 Selenium 库。

首先,您需要为自动化项目安装 Selenium 绑定。库的安装过程取决于您选择使用的语言。

确保您查看 Selenium 下载页面,以确保您使用的是最新版本。

以 java maven 为例子

<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.16.1</version>
</dependency>

第一个脚本

八个基本组件

Selenium 所做的一切都是向浏览器发送命令以执行某些操作或发送请求获取信息。您在使用 Selenium 时将主要使用这些基本命令的组合。

点击链接“在 GitHub 上查看完整示例”以查看上下文中的代码。

1. 启动会话

WebDriver driver = new ChromeDriver();

2. 执行动作

driver.get("https://www.selenium.dev/selenium/web/web-form.html");

3. 请求浏览器信息

driver.getTitle();

4. 建立等待策略

与浏览器的当前状态同步代码是使用 Selenium 面临的最大挑战之一,而良好地执行这一点是一个高级话题。

基本上,您希望确保在尝试定位元素之前该元素在页面上,且在尝试与之交互之前该元素处于可交互状态。

隐式等待很少是最佳解决方案,但在这里它是最容易演示的,因此我们将其用作占位符。

阅读有关等待策略的更多信息。

driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));

5. 发现一个元素

WebElement textBox = driver.findElement(By.name("my-text"));
WebElement submitButton = driver.findElement(By.cssSelector("button"));

6. 元素上执行动作

textBox.sendKeys("Selenium");
submitButton.click();

7. 请求元素信息

message.getText();

8. 退出

driver.quit();

实际使用

如果您想运行超过少数一次性脚本,您需要能够组织和处理您的代码。这一页应该为您提供如何实际用 Selenium 代码执行有意义的任务的想法。

常见用途

大多数人使用 Selenium 执行 Web 应用程序的自动化测试,但 Selenium 支持浏览器自动化的任何用例。

重复性任务

也许您需要登录到网站并下载一些东西,或者提交一个表单。您可以创建一个 Selenium 脚本,定期在预设时间运行。

网页抓取

您是否希望从一个没有 API 的网站收集数据?Selenium 可以帮助您做到这一点,但请确保您熟悉该网站的服务条款,因为有些网站不允许这样做,而其他网站甚至会阻止 Selenium。

测试

在测试中运行 Selenium 需要对 Selenium 执行的操作进行断言。因此,需要一个良好的断言库。为测试提供结构的其他功能需要使用测试运行器。

代码合并

把上面的代码合并:

package dev.selenium.getting_started;import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import java.time.Duration;import static org.junit.jupiter.api.Assertions.assertEquals;public class UsingSeleniumTest {@Testpublic void eightComponents() {WebDriver driver = new ChromeDriver();driver.get("https://www.selenium.dev/selenium/web/web-form.html");String title = driver.getTitle();assertEquals("Web form", title);driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));WebElement textBox = driver.findElement(By.name("my-text"));WebElement submitButton = driver.findElement(By.cssSelector("button"));textBox.sendKeys("Selenium");submitButton.click();WebElement message = driver.findElement(By.id("message"));String value = message.getText();assertEquals("Received!", value);driver.quit();}}

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

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

相关文章

GitHub教程-自定义个人页制作

GitHub是全球最大的代码托管平台&#xff0c;除了存放代码&#xff0c;它还允许用户个性化定制自己的主页&#xff0c;展示个人特色、技能和项目。本教程旨在向GitHub用户展示如何制作个性化主页&#xff0c;同时&#xff0c;介绍了GitHub Actions的应用&#xff0c;可以自动化…

【苏州】买套二手房需要多少钱?

买新房存在一定的交付风险&#xff0c;买二手房毕竟是现货&#xff0c;所以最近二手房购房者越来越多了。 根据住房和城乡建设部副部长董建国在中国国际经济交流中心举行的2023&#xff0d;2024中国经济年会上的发言&#xff0c;今年1到11月&#xff0c;全国二手房交易量占全部…

接口测试工具:Postman的高级用法!

Postman 是一款功能强大的 API 开发和测试工具&#xff0c;以下是一些高级用法的详细介绍和操作步骤。 一. 环境和全局变量 环境变量允许你设置特定于环境&#xff08;如开发、测试、生产&#xff09;的变量&#xff0c;全局变量则在所有环境中都能访问。 操作步骤&#xff…

未来编程语言什么样?编译解释兼容方为王

○、编程语言的未来&#xff1f; 随着科技的飞速发展&#xff0c;编程语言在计算机领域中扮演着至关重要的角色。它们是软件开发的核心&#xff0c;为程序员提供了与机器沟通的桥梁。那么&#xff0c;在技术不断进步的未来&#xff0c;编程语言的走向又将如何呢&#xff1f; …

linux cuda环境搭建

1&#xff0c;检查驱动是否安装 运行nvidia-smi&#xff0c;如果出现如下界面&#xff0c;说明驱动已经安装 记住cuda版本号 2&#xff0c;安装cudatoolkit 上官网CUDA Toolkit Archive | NVIDIA Developer 根据操作系统选择对应的toolkit 如果已经安装了驱动&#xff0c;选…

uniapp uview裁剪组件源码修改(u-avatar-cropper),裁出可自定义固定大小图片

u-avatar-cropper修改后 <template><view class"index"><!-- {{userinfo}} --><view class"top"><view class"bg"><image src"../../static/electronic_card/bg.png"></image></view&g…

2023“楚怡杯”湖南省赛“信息安全管理与评估“--应急响应(高职组)

2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书 2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书第一阶段竞赛项目试题第二阶段竞赛项目试题网络安全事件响应:需要环境私聊博主:2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书 第一…

顶配版SAM:由分割一切迈向感知一切

文章目录 0. 前言1. 论文地址1.1 项目&代码1.2 模型地址1.3 Demo 2. 模型介绍2.1 亮点2.2 方法 3. 量化结果、可视化展示Reference 0. 前言 现有的视觉分割基础模型&#xff0c;如 SAM 及其变体&#xff0c;集中优势在形状、边缘等初级定位感知&#xff0c;或依赖外部模型…

uniapp中uview组件库丰富的Calendar 日历用法

目录 基本使用 #日历模式 #单个日期模式 #多个日期模式 #日期范围模式 #自定义主题颜色 #自定义文案 #日期最大范围 #是否显示农历 #默认日期 基本使用 通过show绑定一个布尔变量用于打开或收起日历弹窗。通过mode参数指定选择日期模式&#xff0c;包含单选/多选/范围…

elasticsearch安装教程(超详细)

1.1 创建网络&#xff08;单点部署&#xff09; 因为我们还需要部署 kibana 容器&#xff0c;因此需要让 es 和 kibana 容器互联&#xff0c;所有先创建一个网络&#xff1a; docker network create es-net 1.2.加载镜像 采用的版本为 7.12.1 的 elasticsearch&#xff1b;…

python渗透工具编写学习笔记:8、无线网络渗透

目录 前言 8.1 概念 8.2 无线网络发现 8.3 无线网络弱点分析 8.3.1 使用Scapy来探测无线网络 8.3.2 使用Aircrack-ng工具 8.4 无线网络密码破解 8.5无线网络漏洞利用&#xff1a; 8.6 无线网络流量分析&#xff1a; 前言 因为一些原因&#xff0c;下一篇我们再来学习p…

Java线上问题排查思路

1、Java 服务常见问题 Java 服务的线上问题从系统表象来看大致可分成两大类: 系统环境异常、业务服务异常。 系统环境异常&#xff1a;主要从CPU、内存、磁盘、网络四个方面考虑。比如&#xff1a;CPU 占用率过高、CPU 上下文切换频率次数较高、系统可用内存长期处于较低值、…

Transformer模型中的Attention算法

参考【经典精读】万字长文解读Transformer模型和Attention机制 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/104393915图解Transformer_transformer模型训练准确率曲线图-CSDN博客https://blog.csdn.net/qq_41664845/article/details/84969266?appinstall0#commentBoxThe…

命令行终端查看当前目录下子文件和子文件夹数量

文章目录 查看当前目录下有多少子文件&#xff1a;查看当前目录下有多少子文件夹&#xff1a; 查看当前目录下有多少子文件&#xff1a; ls -lA ./ | grep "^-" | wc -l查看当前目录下有多少子文件夹&#xff1a; find ./ -mindepth 1 -type d | wc -l

【人工智能Ⅰ】实验9:BP神经网络

实验9 BP神经网络 一、实验目的 1&#xff1a;掌握BP神经网络的原理。 2&#xff1a;了解BP神经网络的结构&#xff0c;以及前向传播和反向传播的过程。 3&#xff1a;学会利用BP神经网络建立训练模型&#xff0c;并对模型进行评估。即学习如何调用Sklearn中的BP神经网络。…

IIS主机头名的用法--一个IP建多个Web站点

主机头名 我们有时候需要在一个IP地址上建立多个web站点&#xff0c;在IIS中&#xff0c;我们可通过简单的设置达到这个目标。 在IIS中&#xff0c;每个 Web 站点都具有唯一的、由三个部分组成的标识&#xff0c;用来接收和响应请求: (1) IP地址 (2)端口号 (3)主机头名。 …

CGAL的加热法

1、介绍 热方法是一种算法&#xff0c;通过返回三角形网格中所有顶点到给定源顶点集合中最近顶点的测地距离近似值&#xff0c;解决单源或多源最短路径问题。网格中两个顶点的测地距离是指从网格表面&#xff08;可能经过面的内部&#xff09;行进的距离。例如&#xff0c;在章…

CodeWhisperer:编码世界中的声音启迪者

人烟 导语&#xff1a; 在数字化时代&#xff0c;编码已经成为了一种不可或缺的技能。而 CodeWhisperer&#xff08;编码世界中的声音启迪者&#xff09;则以其卓越的技术和深厚的知识为人们带来了独特的启发和指导。本文将介绍 CodeWhisperer 的背景和成就&#xff0c;探讨他是…

Centos7:Jenkins+gitlab+node项目启动(3)

Centos7&#xff1a;Jenkinsgitlabnode项目启动(1) Centos7&#xff1a;Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7&#xff1a;Jenkinsgitlabnode项目启动(2) Centos7&#xff1a;Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7&#xff1a;Jenkinsgitlabnode项目启…

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案 当我们使用sudo su切换权限时提示错误&#xff1a; sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set该错误出现原因&#xff1a;是因为/usr/bin/sudo的权限被…