Selenium常用API详解,从入门到进阶(上)

Selenium 常用API大全(一篇就够) Selenium Crawl API 文章目录Selenium Crawl APISelenium 常用方法初始化常用的操作Chrome_Options 与 option区别标签切换句柄清除浏览器窗口自动向下滑动上传图片操作鼠标操作键盘操作等待直到二次截图`Xpath解析``Xpath难点`Chrome 识别标志Selenium 键盘操作Selenium 注意问题 Selenium 常用方法 使用selenium操作时需要时刻模拟认为的操作行为方式 比如:登录等需要多少秒,最好具体到每一小步 初始 阅读详情

目录

1、打开页面

2、查找页面元素

3、输入文本

4、点击操作

5、提交操作

6、清除文本

7、获取文本、属性

8、获取页面的标题和URL

9、窗口

9.1、设置窗口大小

9.2、窗口切换

9.2.1、为什么需要窗口切换?

9.2.2、获取句柄的方式

9.2.3、切换句柄

10、屏幕截图

10.1、为什么需要屏幕截图

10.2、屏幕截图应用


1、打开页面


在Selenium中,通过在ChromeDriver类中的get方法里输入网址,即可打开一个页面,例如你要打开百度的网址,如下代码:

ChromeDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");

Ps:本文讲的所有API都是基于谷歌浏览器驱动,也就是ChromeDriver类下的API~

2、查找页面元素


在Selenium中,在打开页面的情况下,通过indElement方法,输入By类(通过什么方式来定位元素)参数,即可定位页面元素。

例如定位百度页面的“百度一下”按钮,如下代码:

driver.findElement(By.cssSelector("#su"));//#su就是"百度一下"的CSS选择器

上述栗子中使用的是CSS选择器定位,你也可以使用xpath来定位~

详细的,如下:

By类中最常用的两个定位方法:

1. cssSelector(),它可以通过css选择器来定位元素;(推荐使用)

2. className(),它可以通过xpath来定位元素;

xpath如何使用呢?

最常用的是用层级的方式来表示: /子级 //跳级;(@为属性)

例如:谷歌浏览器中的Google标志

这样你就可以拿到这个标签的xpath://*[@id="logo"] 这便是跳级(前面的路径都不显示,直接表示属性id=“logo”这个标签)

或者是xpath://*[@id="csdn-copyright-footer"]/ul[1]/li[2]/a 这便是一个跳级加子集的方式;

值得注意的是:我们不要一个一个去推这个子集表示的方式,可以直接按照上图的方式进行拷贝xpath路径,配合着className()方法使用即可,但是有时候赋值selector或者xpath元素不一定是唯一的,需要我们进行手动修改到唯一(检查的时候通过 ctrl + f 即可检查是否唯一),这就是为什么我们要对xpath的语法要有一定了解的原因;

3、输入文本


在Selenium中,使用sendKeys方法即可对你选中的元素进行输入文本,但是仅适用于文本文字和内容可以编辑的元素,例如在百度页面的搜索框内输入“你好”,如下代码:

//先使用findElement定位元素(返回一个WebElement类型的元素),再对定位的元素进行输入文本
driver.findElement(By.cssSelector("#kw")).sendKeys("你好");

Ps:即使反向操作,也就是对不可编辑的元素进行操作,也不会报错,但是不会产生任何实际效果。

4、点击操作


在Selenium中,对你定位到的元素使用click方法,即可进行鼠标点击操作,例如点击百度界面的“百度一下”按钮,代码如下:

//先使用findElement定位元素(返回一个WebElement类型的元素),再进行click
driver.findElement(By.cssSelector("#su")).click();

5、提交操作


提交操作是干什么的?实际上就和你按下Enter键的效果是一样的,通过submit方法即可实现,例如在百度页面通过submit方法实现自动按下回车键,如下代码:

//先使用findElement定位元素(返回一个WebElement类型的元素),再进行submit
driver.findElement(By.cssSelector("#su")).submit();

Ps:selenium官方不推荐使用submit,更推荐click,因为可以使用submit的地方click都能代替,并且click使用场景更广(submit仅适用于表单元素)。

6、清除文本


在Selenium中,可以使用clear将你定位的元素的文本内容进行清除,例如清除百度输入框中的文本,如下代码:

driver.findElement(By.cssSelector("#kw")).clear();

Ps:用来频繁的测试是否可以重复输入(适用sendKeys输入后,在用clear清除、再输入然后清除......)。

7、获取文本、属性


在Selenium中,通过getText可以获取你定位的元素的文本,例如获取百度页面热搜中的文本,如下代码:

//获取到的文本返回值是一个String类型
String text = driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title")).getText();
System.out.println(text);

但如果你要获取“百度一下”这个按钮的文本就无法获取(但程序不会报错,只是返回一个空字符串),因为这个元素它不含文本,只有一些属性(id、class、type、value......),如下F12检查可以看到:

所以我们只能获取它的属性,那么属性该如何获取呢?通过getAttribute方法即可获取到,方式和获取文本一样,先定位元素,再获取;例如你要获取class属性,那么就是getAttribute("class);

8、获取页面的标题和URL


在Selenium中,这个没什么特别要注意的点,基础操作,直接上代码:

System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());

9、窗口


9.1、设置窗口大小

在Selenium中,可以设置窗口的大小:最大化、最小化、全屏窗口、手动设置窗口大小;如下代码:

        //窗口最大化
        driver.manage().window().maximize();
        //窗口最小化
        driver.manage().window().minimize();
        //全屏
        driver.manage().window().fullscreen();
        //手动设置大小(按顺序分别是宽和高)
        driver.manage().window().setSize(new Dimension(1024, 500));

9.2、窗口切换

9.2.1、为什么需要窗口切换?

想象这样一个场景,我们使用Selenium打开一个网页,在从这个网页通过click点击超链接打开另一个网页,那么我们继续使用Selenium操作网页时,是对刚刚这两个网页中的哪一个网页进行操作?实际上还是第一个网页,如果你一意孤行还认为是对第二个网页进行操作,就有可能引发如下异常:(找不到该元素)

实际上,当浏览器每次打开一个标签页的时候,都会自动给每个标签页进行标识,也叫做“句柄”。

9.2.2、获取句柄的方式

在Selenium中,我们有如下两种方式获得句柄:

        //获取所有标签页的句柄
        Set<String> handles = driver.getWindowHandles();
        //获取当前页面的句柄
        String curHandle = driver.getWindowHandle();

并且哪个页面对应哪个句柄,我们是不可知的,例如我打开了两个页面,获取句柄并打印,如下:

9.2.3、切换句柄

        //获取当前页面的句柄
        String curHandle = driver.getWindowHandle();
        //切换到curHandle句柄
        driver.switchTo().window(curHandle);

Ps:自动化基本没有需要切换窗口的场景,因为要进行测试,就直接拿到这个网页的地址即可,没必要这样切换!

10、屏幕截图


10.1、为什么需要屏幕截图

        想象一下,程序执行的速度 和 页面渲染的速度 谁快?必然是程序执行快,那么当代码执行到查找结果页的元素时,页面还没有加载完全,程序就会报错,如下代码:

    public void test2() {
        ChromeDriver driver = new ChromeDriver();
        //打开百度页面
        driver.get("https://www.baidu.com");
        //在输入框中输入"你好"
        driver.findElement(By.cssSelector("#kw")).sendKeys("你好");
        //点击“百度一下”按钮
        driver.findElement(By.cssSelector("#su")).click();
        //点击一个搜索结果
        driver.findElement(By.cssSelector("#\\31  > div > div > h3 > a")).click();
        driver.close();
    }

报错,如下图(找不到该元素)

解决办法:在点击“百度一下”这个按钮以后,休眠几秒即可(等待页面加载出来)。

但是自动化程序执行的速度非常快,我们怎么能知道这个地方出了什么问题呢?接着往下看~

10.2、屏幕截图应用

首先需要在pom.xml中导入依赖,如下:

        <!--   保存屏幕截图文件需要用到的包     -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

接着如下代码:

    public void test2() throws IOException {
        ChromeDriver driver = new ChromeDriver();
        //打开百度页面
        driver.get("https://www.baidu.com");
        //在输入框中输入"你好"
        driver.findElement(By.cssSelector("#kw")).sendKeys("你好");
        //点击“百度一下”按钮
        driver.findElement(By.cssSelector("#su")).click();

        //屏幕截图(保存现场)
        File srcfile = driver.getScreenshotAs(OutputType.FILE);//FILE表示以文件的形式保存
        //把截图保存到指定路径下
        String filename = "my.png";//没输入路径,就是当前项目下
        FileUtils.copyFile(srcfile, new File(filename));

        //点击一个搜索结果
        driver.findElement(By.cssSelector("#\\31  > div > div > h3 > a")).click();
        driver.close();
    }

接着就可以观察到截图如下:

这样我们就可以发现原因,是由于页面没有加载出来的原因~

Ps:保存截图的时候,文件名时固定的格式(已经存在重名文件),程序多次生成的截图都会被同名覆盖,为了避免这个情况,我们可以将文件名设置为动态的,也就是加入时间戳。


自动化测试之selenium的chromedriver安装、配置的完整流程(取需要的步骤走即可,不一定要全部都走) 自动化测试之selenium的chromedriver安装、配置的完整流程 阅读详情

相关推荐

selenium进阶

code获得cookie信息添加cookie删除部分cookie删除所有的cookie。

MXB1220的博客 334

Selenium常用API详解,从入门到进阶(全套)

常用API汇总,从入门到进阶!

CYK_byte的博客 4772

【Selenium】selenium自动化入门之webdriver框架使用

Selenium篇如期而至,不同于前一个appium的系列,这个系列将直接带大家从selenium工具的入门到进阶 此外这一个系列的全部都将附带视频教学,需要视频教学的可以点击并输入暗号:优快云 那么就开始吧!!! 目录前言第 1章 webdriver1.1 操作浏览器基本方法前言1.1.1 打开网页1.1.2 设置休眠1.1.3 页面刷新2.1.4 页面切换1.1.5 设置窗口大小1.1.6 截屏1.1.7 退出1.1.8加载浏览器配置后话 前言 环境搭建就不讲了,博客、优快云上都有不少的教程,甚至B

Chaqian的博客 1万+

ChromeDriver / Selenium-server

ChromeDriver 是一个 WebDriver 的实现,专门用于自动化控制 Google Chrome 浏览器。以下是关于 ChromeDriver 的详细说明:定义与作用:ChromeDriver 是一个独立的服务器程序,作为客户端库与 Google Chrome 浏览器之间的桥梁,允许对浏览器进行编程控制。它遵循 WebDriver 协议,这是一个 W3C 标准,旨在为 web 测试自动化提供平台和语言无关的 API。

Herman _java开发 6347

记录 Selenium 常用功能和API

记录 Selenium 常用功能和API

想听风雨的博客 1698

Selenium之入门

它直接与浏览器通信并对其进行控制。6)Partial link选择(a标签文本内容模糊匹配):driver.findElement(By.partialLinkText("使用百"));8)xpath选择:driver.findElement(By.xpath("//*[@id=\"kw\"]"));3)name选择: driver.findElement(By.name("wd"));2)ID选择: driver.findElement(By.id("kw"));爬虫:数据采集、数据清晰、数据分析!

weixin_65808248的博客 1429

Selenium常用API详解

程序的执行速度快于页面渲染的速度(可能是网速的原因),会导致自动化执行的时候,找不到页面元素,因此需要记录当时的场景。下拉框里的内容需要进行两次定位,先定位到下拉框对下拉框进行操作后,再定位到下拉框内里的选项。警告弹窗alert、确认弹窗confirm、提示弹窗prompt。在Selenium中,在打开页面的情况下,通过。方法,即可定位页面元素。

qq_43716934的博客 574

Python+selenium自动化之selenium常用API

前面的几十篇文章介绍了selenium的常用的API的用法,但是这些仅仅是API的一小部分,大家可以去selenium官网获取查看https://python-selenium-zh.readthedocs.io/zh_CN/latest/7.WebDriver%20API/。 下面把比较常用的30个API汇总一下: 1.driver.current_url:用于获得当前页面的URL 2.driver.title:用于获取当前页面的标题 3.driver.page_source:用于获取页面html

软件测试阿沐博客 336

Selenium 常用自动化 API

输入完成之后就会进入搜索结果页面,在结果页中我们想断言第一个搜索结果的标题中是否匹配我的关键字,这个时候就可以继续使用检查找到它的 selector,我们继续使用 CSS 定位符,然后需要断言它的内容,我们看下它的定位符“ember377”,很明显定位符里面包含数字,如果下次跑 case 时数字变化了,case 就会失败,通常情况下如果我们发现定位符写的不够精准就需要去找到正确的稳定的定位符。在平时写代码时我们也会尽量使用 find_element 方法, 然后在方法中设置我们需要定位控件的定位符。

我乐了的博客 1032

selenium基于java的抓取数据以及selenium常用api总结

一、配置驱动与属性 我主要是使用谷歌的驱动,来模仿谷歌浏览器点击。 下载驱动地址:https://npm.taobao.org/mirrors/chromedriver/ 选择版本要根据自己电脑的谷歌浏览器版本来决定下载(在右上角帮助点击关于Google) //配置驱动路径 System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); //配置驱动属性 ChromeOptions chromeOptions =

weixin_42736075的博客 813

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南

本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。

weixin_29229261的博客 1023

selenium-java常用api

selenium-java常用api。

蓝色海洋-探寻 2649

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 297

selenium常用API

selenium常用API 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插入链接 Ctrl + L 插入代码 Ctrl + K 插入图片 Ctrl + G 提升标题 Ctrl + H 有序列表 Ctrl + O 无序列表 Ctrl + U 横线 Ctrl + R 撤销 Ctrl ...

chenwang2018的博客 3646

从零到一:手把手教你用STM32F103C8T6打造个人专属开发板(附立创EDA工程与源码)

本文详细介绍了如何使用STM32F103C8T6微控制器从零开始设计和制作个人专属开发板。内容涵盖硬件选型、原理图设计、PCB布局、功能验证等全流程,并提供了立创EDA工程文件和源码,帮助开发者深入理解STM32开发板的硬件架构与设计要点。

weixin_26802933的博客 284

CSR mascon产品深度解析

GRACE数据产品 mascon产品 质量变化 地球重力场

weixin_43047707的博客 4432

selenium常用API介绍

selenium常用API介绍 文本的清空与提交 br.find_element_by_id("xxx").clear()#清空文本 br.find_element_by_id("xxx").submit()#提交,当然也可以点击提交按钮提交 退出游览器 br.close()#关闭当前选项卡 br.quit()#退出整个游览器 获取页面标题和当前页面源码 #这两个都是属性 br.title br.page_source 游览器窗口最大化 br.maximize_window() 刷新页面 br.re

learn112的博客 1298

gRPC之gRPC开发流程与入门案例

gRPC之gRPC开发流程与入门案例

YIYIYI 3756

快速入门Selenium自动化测试

而前端工程师则可以充分利用自己所掌握的JavaScript相关API,来替换Selenium中的一些API,从而更快地入门。Selenium支持的编程语言有Java、Python、C#、Ruby、JavaScript、Kotlin,Python可能是最常用的语言,很多Selenium教材都是以Python作为编程语言。查看页面元素的代码可知,搜索框的id为query,根据基础的JavaScript知识,如果在firefox的开发者控制台中执行以下JavaScript代码,可以在搜索框中输入。

kk_lzvvkpj的博客 1117

android广告SDK原理详解(附源码)

广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告位代码,集成他们的广告SDK包。然后谋事在人,成事在天,只有每天看报表查查收益。   也有一些开发者为了能够提高自己的变现水平,同时接入了好几家的sdk,哪家出的收益高一点我就出哪家的广告,但是这

rmcgogo的博客 1万+

Claude Code(7):从零创建你的第一个 Skill

在前面的文章,我们介绍了 Skills 的基本概念,这篇我们深入实战,从零开始创建你的第一个 Skill,并逐步解锁所有配置项,让 Claude Code 真正熟悉你的测试规范和习惯。

blues_C的博客 646

Java爬虫入门详解(Selenium)

目录 一、Selenium简介 二、Selenium组成 三、Selenium特点 四、案例演示 1.下载驱动包 2.创建项目并导入依赖 3.基础配置 4.案例演示 1.Class 2.ID 3.name 4.tag 5.link 6.Partial link选择(a标签文本内容模糊匹配) 7.css选择器 8.xpath选择 9.在文本框中输入内容 五:Selenium爬取JD商品信息 1.初始化设置 2.获取京东网站首页查询按钮并完成点击事件(进入页面自动查询)

weixin_57504000的博客 9188

2026年算法工程师常见面试简答题

本文摘要:文章系统梳理了机器学习与深度学习中的30个核心概念,涵盖模型优化、评估指标、经典算法和大模型应用等关键知识点。主要内容包括:1)过拟合与欠拟合的成因及解决方法;2)偏差-方差权衡原理;3)数据划分与交叉验证策略;4)分类/回归任务评估指标选择;5)逻辑回归、决策树、SVM等传统算法解析;6)梯度下降优化与正则化技术;7)CNN、RNN、Transformer架构对比;8)Embedding表示与RAG技术。特别强调面试高频考点如XGBoost改进、注意力机制原理等,并给出实际工程中的解决方案建议,

不务正业的猿 347

基于Python的selenium入门超详细教程(第1章)--WebDriver API篇

前面已经对selenium有了简单的了解,Selenium 是一个用于 Web 应用程序测试的工具集,它能够模拟用户在浏览器中的操作,比如点击按钮、输入文本、切换页面等。通过 Selenium,我们可以轻松地与各种主流浏览器(如 Chrome、Firefox、Edge 等)进行交互,为自动化测试提供了坚实的基础并且已经在Python环境下搭建好了selenium环境,从这篇开始,将正式学习selenium的webdriver框架。

lastriches的博客 2387

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python selenium 等待js加载完成_Python+selenium自动化之selenium常用API

前面的几十篇文章介绍了selenium的常用的API的用法,但是这些仅仅是API的一小部分,大家可以去selenium官网获取查看https://python-selenium-zh.readthedocs.io/zh_CN/latest/7.WebDriver%20API/。下面把比较常用的30个API汇总一下:1.driver.current_url:用于获得当前页面的URL2.dr...

weixin_40002846的博客 1151

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 谈谈Spring中Bean的生命周期?(让你瞬间通透~)
下一篇: error: failed to push some refs to ... 就这篇,一定帮你解决
陈亦康
陈亦康 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄5年 6万+粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值