Selenium 自动化 —— 入门和 Hello World 实例

news2024/11/17 21:49:38
Selenium 是什么

Selenium 是一个用于自动化网页浏览器操作的工具,它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能,也可用于执行一些基本的浏览器操作任务,例如自动化表单填写、网页导航等。

Selenium 是一个开源项目,支持多种编程语言,如Java、Python、JavaScript等。通过这些语言的绑定库,你可以在不同的语言环境下编写 Selenium 测试脚本。

Selenium 可以做什么

Selenium 是一个功能强大的工具,用于自动化网页浏览器操作,所以我们可以用它完成很多工作。

  1. 自动化测试:这是 Selenium 最常用的用途。通过编写测试脚本,可以模拟用户在网页上的交互操作,例如点击按钮、填写表单、验证页面内容等。这样可以自动执行测试,并快速发现网站应用程序中的 bug 和问题。
  2. 跨浏览器测试:由于Selenium支持多种浏览器,包括 Chrome、Firefox、Safari、Edge 等,因此它可以用于执行跨浏览器测试,确保网站在不同浏览器上的一致性和兼容性。如果我们的网站要手动的把主流浏览器都跑一遍测试用例,那估计得崩溃。
  3. 爬虫:一般爬虫会用模拟 HTTP 请求,但是某些情况下服务端返回的是渲染后的静态页面,这时候我们就可以用 Selenium 模拟用户的点击,或者解析网页的元素得到想要的数据。
Selenium 快速入门

实践是检验真理的唯一标准,所以接下来会用百度搜索的例子展示 Selenium 的基本使用。

下载WebDriver

我们需要操作浏览器模拟用户的点击等操作,但是我们不会直接操作浏览器,而是通过间接的方式,这就是WebDriver,类似于我们各种驱动程序,如网卡驱动、磁盘驱动等等。
在这里插入图片描述

可以看到,雪人在旁边看戏

WebDriver是Selenium的一个子项目,它是Selenium中用于控制浏览器的接口。WebDriver提供了一组API,可以直接操作浏览器,模拟用户在浏览器中的各种操作。

Windows系统中,我们需要下载对应浏览器对应版本的驱动。
比如我用的是Chrome,所以在这里可以下载。

下载解压后,是一个chromedriver.exe的可执行文件,我们把它放到某个目录下,后面Java代码中会指定。

引入 Selenium 依赖

如果用的是maven管理依赖,我们可以在pom.xml中引入 Selenium 依赖:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
编写测试代码

代码做的事非常简单:

  1. 打开百度首页
  2. 文本框输入"Hello World"
  3. 点击搜索按钮
  4. 进入结果页面,打印输出html的title
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class BaiduSearchTest {
    public static void main(String[] args) {
        WebDriver driver = null;
        try {
            // 设置Chrome驱动的路径
            System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\webdriver\\chromedriver-122\\chromedriver.exe");

            // 创建WebDriver对象
            driver = new ChromeDriver();
            // 打开百度网站
            driver.get("https://www.baidu.com");
            // 找到搜索输入框
            WebElement searchBox = driver.findElement(By.name("wd"));
            // 在搜索输入框中输入关键字
            searchBox.sendKeys("Hello World");
            // 提交搜索表单
            searchBox.submit();
            // 等待搜索结果加载
            try {
                Thread.sleep(10000); // 等待3秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            // 输出页面标题
            System.out.println("Page title is: " + driver.getTitle());
        } finally {
            // 关闭浏览器
            if(driver != null){
                driver.quit();
            }
        }
    }
}

运行Java代码,会弹出一个新的Chrome浏览器窗口。
在这里插入图片描述
到这里,我们可以通过这个例子,感受 Selenium 的强大。Selenium 还提供很多功能,后面的文章 postnull 会进一步介绍。利用这些特性,我们可以很做更多有意思的事。

注意点
  • 注意 WebDriver 和 浏览器的版本需要对应。

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

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

相关文章

扒带和扒谱的区别 FL Studio怎么扒带 扒带编曲制作 扒带简单歌曲

在许多业余音乐爱好者们的眼里&#xff0c;扒带和扒谱是同一种东西。诚然&#xff0c;扒带和扒谱的确非常相似&#xff0c;但是从严格的意义上来说&#xff0c;这二者还是有一定的区别。今天我们就来说一说扒带和扒谱的区别&#xff0c;FL Studio怎么扒带。 FL Studio21中文官网…

.Net使用ElasticSearch

文章目录 前言主体内容一.Kibana中ElasticSearch的基础操作1.GET&#xff08;查询&#xff09;1.POST&#xff08;新增&#xff09;1.PUT&#xff08;修改&#xff09;1.DELET&#xff08;删除&#xff09; 二.在.Net中&#xff0c;对ElasticSearch进行基础操作1.DotNet连接Ela…

Docker常见指令

1.docker search mysql &#xff1a;从docker镜像仓库搜索和mysql有关的镜像 docker search mysql 2.docker pull mysql &#xff1a;从docker仓库拉取mysql镜像 docker pull mysql 3.docker run mysql &#xff1a;启动mysql镜像 docker run mysql 4.docker ps &#xff…

C语言学习--字符和字符串

目录 1.字符 字符输入--scanf 字符输入--getchar 2.字符串 字符串输入--scanf 字符串输入--gets 1.字符 字符输入--scanf C语言scanf输入时缓冲区问题 scanf函数是标准输入流&#xff08;从键盘接收数据)&#xff0c;接收的数据放入输入缓冲区中&#xff0c;其中就包括…

粒子群算法对pi控制器进行参数优化,随时优化pi参数以控制直流无刷电机转速。

粒子群算法对pi控制器进行参数优化&#xff0c;随时优化pi参数以取得设定直流无刷电机转速。 PSO优化PID&#xff0c;用于BLDC速度控制 仿真平台为&#xff1a;MATLAB 采用的是Simulinkm程序相配合 仿真结果以及程序示例&#xff1a;

通过NFS 实现windows共享linux目录

一、配置WIndows 1.进入程序和功能 2.勾选NFS服务&#xff0c;安装客户端 二、安装NFS Service 在ubuntu 1.查看apt源是否存在nfs服务端安装包 sudo apt-cache madison nfs-kernel-server 2. 安装nfs-kernel-server sudo apt install nfs-kernel-server 3.建立共享目录&…

15.WEB渗透测试--Kali Linux(三)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;14.WEB渗透测试--Kali Linux&#xff08;二&#xff09;-CSDN博客 Kali工具使用 3389远…

ArrayList 和 LinkedList 有什么区别?

1、典型回答 ArrayList 和 LinkedList 是 Java 中常用的集合类&#xff0c;它们都实现了 List 接口&#xff0c;如下图所示&#xff1a; 但二者有以下几点不同&#xff1a; 1、底层数据结构实现不同&#xff1a; ArrayList 底层使用数组实现&#xff0c;它通过一个可调整大小…

程序员注意“进厂”时机!!鸿蒙生态已进入第二发展阶段

自打今年1月份鸿蒙宣布星河版发布后&#xff0c;已经有200家大型互联网企业展开鸿蒙原生合作。就在今天的3月14日&#xff0c;继钉钉、高德、淘宝、UC浏览器、夸克等app应用启动鸿蒙原生开发后。又迎来阿里旗下多款应用与华为举行鸿蒙合作签约仪式&#xff0c;宣布将基于Harmon…

如何更简捷地在 Java 中进行函数式编程

public static void findNemo(List names) { boolean found false; for(String name : names) { if(name.equals(“Nemo”)) { found true; break; } } if(found) System.out.println(“Found Nemo”); else System.out.println(“Sorry, Nemo not found”); } …

【文献阅读】A Fourier-based Framework for Domain Generalization(基于傅立叶的领域泛化框架)

原文地址&#xff1a;https://arxiv.org/abs/2105.11120 摘要 现代深度神经网络在测试数据和训练数据的不同分布下进行评估时&#xff0c;存在性能下降的问题。领域泛化旨在通过从多个源领域学习可转移的知识&#xff0c;从而泛化到未知的目标领域&#xff0c;从而解决这一问…

“禁止互撕”新规第二天,热搜把#章子怡“怒怼”网友#推上了榜一

3月12日&#xff0c;微博热搜发布公告&#xff0c;对热搜词条处置规则进行了更新。 针对热搜词条长期以来存在的引战互撕、挑唆对立等不良现象&#xff0c;热搜生态秩序亟待改善&#xff0c;微博给出了两大解决方案&#xff1a; 一是更新热搜词条处置规则&#xff0c;当热搜词…

吴恩达机器学习笔记 二十 机器学习开发过程 增加数据

选择结构&#xff08;模型、数据等&#xff09;-->训练模型-->诊断&#xff08;偏差、方差、误差分析&#xff09; 增加数据 1.增加全新的 x、y 2.数据增强(data augumentation) 3.数据合成(data synthesis) 目前算法和模型已经比较完善了&#xff0c;可以考虑专注设…

mac系统下GCC优化编译的使用

mac系统下GCC优化编译的使用 编译流程 预处理&#xff1a;g -E homework.cpp -o homework.i 编译&#xff1a;g -S homework.i -o homework.s //.s为汇编文件 汇编&#xff1a;g -c homework.s -o homework.o 链接&#xff1a;g homework.o -o homework 优化选项 -O0&#…

陷入“3·15”旋涡的两轮电动车,急需降“火”

正值备受关注的“315”国际消费者权益日&#xff0c;此前陷入“火灾风波”的两轮电动车&#xff0c;又一次回到舆论中心。 最近&#xff0c;市场监管总局发布电动自行车消费提示&#xff0c;目的是帮助消费者科学购买和使用相关产品&#xff0c;防范可能发生的安全风险。其中提…

【深度学习】diffusers 学习过程记录,StableDiffusion扩散原理

教程地址&#xff1a;https://huggingface.co/docs/diffusers/quicktour 文章目录 环境扩散模型噪声残差的作用原理&#xff0c;文字编码如何给入Unetschedulerguidance_scalescheduler.init_noise_sigma训练时候的反向传播 环境 python3.10安装环境&#xff1a; pip install…

影城管理系统|基于springboot框架+ Mysql+Java+B/S架构的影城管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

基于Spring Boot的社区团购系统,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1767743385296252930

搭建项目前端系统基础架构

Vue是什么 Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。目前市面上有很多基于Vue重新封装的各种前端UI框…

暗光增强——IAT网络推理测试(详细图文教程)

IAT模型由两个独立的分支组成&#xff0c;局部分支用于像素调整&#xff0c;并输出两个用于加法和乘法的特征图。全局分支用于全局调整并输出颜色矩阵和gamma值&#xff0c;全局分支受DETR启发&#xff0c;网络通过动态查询学习的方式更新颜色矩阵和gamma值。整个模型只有超过9…