Java测试——selenium常见操作(2)
这篇博客继续讲解一些selenium的常见操作
selenium的下载与准备工作请看之前的博客:Java测试——selenium的安装与使用教程
先创建驱动
ChromeDriver driver = new ChromeDriver();
等待操作
我们上一篇博客讲到,有些时候代码执行过快,页面还没渲染完毕,因此会导致查找元素失败的情况
上一篇博客中使用线程阻塞等待的方式进行等待,这里介绍一下selenium中的几种等待操作
强制等待
也就是程序强制阻塞进行等待
Thread.sleep(毫秒数);
这种方法不能用的特别多,因为我们的测试用例有很多,如果一个测试用例需要阻塞等待三秒,那么100个测试用例就需要等待300秒了
隐式等待
可以使用下面这行代码进行隐式等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(秒数));
当我们执行隐式等待后,后面的driver在查询元素时都会先判断元素是否存在,如果存在就正常继续执行流程,如果不存在,会在我们指定的秒数中不断的轮询查看元素是否存在
显示等待
使用下面的方法可以显示等待
new WebDriverWait(driver,Duration.ofSeconds(秒数)).until(driver->待查找元素));
例如我们可以在5秒内显示等待查找百度搜索框
new WebDriverWait(driver,Duration.ofSeconds(5)).until(driver->driver.findElement(By.cssSelector("#kw")));
浏览器操作
浏览器的请求网址操作
driver.navigate().to(网址);
浏览器前进操作:
driver.navigate().forward();
浏览器后退操作:
driver.navigate().back();
浏览器刷新操作:
driver.navigate().refresh();
弹窗操作
弹窗分类
前端中弹窗分为三种:
警告弹窗:只有关闭

确认弹窗:有好和取消

提示弹窗:
有好,取消和输入框

弹窗操作
先将driver作用切换到弹窗上
driver.switchTo().alert()
确认操作:
alert.accept();
取消操作:
alert.dismiss();
输入文本操作:
alert.sendKeys("xxxx");
选择框操作

前端代码:
<html>
<body>
<select id="ShippingMethod"
onchange="updateShipping(options[selectedIndex]);" name="ShippingMethod">
<option value="30">库里</option>
<option value="23">詹姆斯</option>
<option value="35">杜兰特</option>
<option value="11">汤普森</option>
</select>
</body>
</html>
可以跟据多种方式对选择框中的内容进行选择
先选中选择框元素
WebElement element = driver.findElement(By.cssSelector("#ShippingMethod"));
创建select对象
Select select = new Select(element);
根据文本选择
select.selectByVisibleText("库里");
根据属性选择
select.selectByValue("30");
根据序号选择
序号从上至下,从0开始
select.selectByIndex(0)
执行脚本
我们可以执行js中的指令
driver。executeScript(js命令);
例如将浏览器页面滑到最上面
driver.executeScript("document.documentElement.scrollTop=0");
用js指令进行搜索
driver.executeScript("var kw = document.querySelector('#kw'); kw.value = '蔡徐坤'");
文件上传
driver.findElement(文件元素).sendKeys(文件路径);
例如:
driver.findElement(By.cssSelector("body > div > div > input[type=file]")).sendKeys("/Users/lixiao/Downloads/selenium-html/upload.html");
无头模式
我们可以选择自动化测试中不显示浏览器操作过程
ChromeOptions options = new ChromeOptions();
options.addAruguments("-headless");
ChromeDriver driver = new ChromeDriver();
这样后面的driver就是无头模式了
相关文章:
Java测试——selenium常见操作(2)
这篇博客继续讲解一些selenium的常见操作 selenium的下载与准备工作请看之前的博客:Java测试——selenium的安装与使用教程 先创建驱动 ChromeDriver driver new ChromeDriver();等待操作 我们上一篇博客讲到,有些时候代码执行过快,页面…...
【三维点云】01-激光雷达原理与应用
文章目录内容概要1 激光雷达原理1.1 什么是激光雷达?1.2 激光雷达原理1.3 激光雷达分类三角法TOF法脉冲间隔测量法幅度调制的相位测量法相干法激光雷达用途2 激光雷达安装、标定与同步2.1 激光雷达安装方式考虑因素2.2 激光雷达点云用途2.3 数据融合多激光雷达数据融…...
自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达
文章目录1. 物体检测与跟踪算法1.1 DBSCAN1.2 卡尔曼滤波2. 毫米波雷达公开数据库的未来发展方向3. 4D毫米波雷达特点及发展趋势3.1 4D毫米波雷达特点3.1.1 FMCW雷达角度分辨率3.1.2 MIMO ( Multiple Input Multiple Output)技术3.2 4D毫米波雷达发展趋势3.2.1 芯片级联3.2.2 专…...
C语言(内联函数(C99)和_Noreturn)
1.内联函数 通常,函数调用都有一定的开销,因为函数的调用过程包含建立调用,传递参数,跳转到函数代码并返回。而使用宏是代码内联,可以避开这样的开销。 内联函数:使用内联diamagnetic代替函数调用。把函数…...
图卷积神经网络(GCN)理解与tensorflow2.0 代码实现 附完整代码
图(Graph),一般用 $G=(V,E)$ 表示,这里的$V$是图中节点的集合,$E$ 为边的集合,节点的个数用$N$表示。在一个图中,有三个比较重要的矩阵: 特征矩阵$X$:维度为 $N\times D$ ,表示图中有 N 个节点,每个节点的特征个数是 D。邻居矩阵$A$:维度为 $N\times N$ ,表示图中 N…...
模电学习6. 常用的三极管放大电路
模电学习6. 常用的三极管放大电路一、判断三极管的工作状态1. 正偏与反偏的概念2. 工作状态的简单判断二、三种重要的放大电路1. 共射电路2. 共集电极放大电路3. 共基极放大电路一、判断三极管的工作状态 1. 正偏与反偏的概念 晶体管分P区和N区, 当P区电压大于N区…...
Lesson 6.6 多分类评估指标的 macro 和 weighted 过程 Lesson 6.7 GridSearchCV 的进阶使用方法
文章目录一、多分类评估指标的 macro 和 weighted 过程1. 多分类 F1-Score 评估指标2. 多分类 ROC-AUC 评估指标二、借助机器学习流构建全域参数搜索空间三、优化评估指标选取1. 高级评估指标的选用方法2. 同时输入多组评估指标四、优化后建模流程在正式讨论关于网格搜索的进阶…...
基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告
界面结果:图像获取;图像处理;人脸识别 程序结构设计 图形用户界面设计与程序结构设计是互为表里的。或者说,程序结构设计是软件设计最本质、最核心的内容。徒有界面而内部逻辑结构混乱的软件一无是处。 Windows 操作系统是一款图形化的操作系统,相比于早期的计算机使用的命…...
前后端RSA互相加解密、加签验签、密钥对生成(Java)
目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互…...
基于Java+SpringBoot+Vue前后端分离学生宿舍管理系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...
前端高频面试题—JavaScript篇(二)
💻前端高频面试题—JavaScript篇(二) 🏠专栏:前端面试题 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向…...
【微信小游戏开发笔记】第二节:Cocos开发界面常用功能简介
Cocos开发界面常用功能简介 本章只介绍微信小游戏开发时常用的功能,其他功能不常用,写多了记不住(其实是懒 -_-!): 层级管理器,用于操作各个节点。资源管理器,用于操作各种文件资源。场景编辑…...
3分钟,学会了一个调试CSS的小妙招
Ⅰ. 作用 用于调试CSS , 比控制台添更加方便,不需要寻找 ;边添加样式,边可以查看效果,适合初学者对CSS 的理解和学习; Ⅱ. 快速实现(两边) ① 显示这个样式眶 给 head 和 style 标签添加一个…...
【项目精选】基于jsp的健身俱乐部会员系统
点击下载源码 社会可行性 随着社会的发展和计算机技术的进步,人类越来越依赖于信息化的管理系统,这种系统能更加方便的获得信息以及处理信息。人们都改变了过去的思维,开始走向了互联网的时代,在 可行性小结 本章在技术可行性上…...
java注解
1. Java注解(Annotation) 2. Java注解分类 3. JDK基本注解 4. JDK元注解 5. 注解分类 6. 自定义注解开发 7. 提取Annotation信息 8. 注解处理器 9. 动态注解处理器(spring aop方式) 1. Java注解(Annotation) Java注解是附加在代码中的一些元信息,用于…...
移动测试相关
一、环境搭建 准备工作: (python、pycharm安装配置好) 1、Java SDK 安装配置 Java Downloads | Oracle 下载安装后配置系统环境变量:JAVA_HOME(jdk根目录路径)和path(jdk根目录下的bin目录路径…...
SIGIR22:User-controllable Recommendation Against Filter Bubbles
User-controllable Recommendation Against Filter Bubbles 摘要 推荐系统经常面临过滤气泡的问题:过度推荐基于用户特征以及历史交互的同质化项目。过滤气泡将会随着反馈循环增长,缩小了用户兴趣。现有的工作通常通过纳入诸如多样性和公平性等准确性之…...
Python中的进程线程
文章目录前言多进程与多线程基本概念多进程multiprocessing 类对象进程池subprocess模块进程间通信多线程threading实现线程操作线程共享所有变量线程锁参考资料前言 又花了点时间学习了一下Python中的多线程与多进程的知识点,梳理一下供复习参考 多进程与多线程 …...
python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda
文章目录0. 教训1. 问题:使用conda update更新conda后,anaconda所有环境崩溃1.1 问题描述1.2 我搜索到的全网最相关的问题----也没有解决3 尝试流程记录3.1 重新安装pip3.2 解决anaconda编译问题----没成功0. 教训 (1) 不要轻易使用conda update更新conda----我遇到…...
c++11 标准模板(STL)(std::multimap)(四)
定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…...
仿真模型中硅胶减震器的特征频率与谐振频率的受力分析
COMSOL仿真模型硅胶减震器减振器特征频率谐振频率受力分析仿真模型最近在研究硅胶减震器的特性,发现用COMSOL来仿真这东西还挺有意思的。硅胶减震器嘛,主要就是用来减振的,比如在一些精密仪器或者机械设备上,防止振动对设备造成损…...
UE4SS终极指南:解锁虚幻引擎4/5游戏Mod开发新境界
UE4SS终极指南:解锁虚幻引擎4/5游戏Mod开发新境界 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...
Insanely Fast Whisper终身学习模型:持续优化的语音识别系统设计
Insanely Fast Whisper终身学习模型:持续优化的语音识别系统设计 【免费下载链接】insanely-fast-whisper 项目地址: https://gitcode.com/GitHub_Trending/in/insanely-fast-whisper 你是否还在为语音识别速度慢、准确率低而烦恼?是否希望拥有一…...
CANoe实战:手把手教你用J1939.dbc发送超8字节长帧报文(附完整CAPL代码)
CANoe实战:J1939长帧报文分包发送全解析与CAPL代码优化 在汽车电子开发领域,J1939协议作为商用车通信标准,其长帧报文处理一直是工程师面临的典型挑战。当数据长度超过CAN总线单帧8字节限制时,如何高效实现分包传输?本…...
B端拓客号码核验行业:痛点剖析、技术突围与发展思考氪迹科技法人 号码筛选系统,阶梯式价格
B端拓客的效率与质量,很大程度上取决于核心决策人触达的精准度,而企业法人、股东、董监高等群体的有效联系方式,正是打通这一环节的关键。作为拓客工作的前置基础性步骤,号码核验的质量直接关联拓客投入的回报效率,更是…...
3步实现!本地化语音转文字工具TMSpeech全场景应用指南
3步实现!本地化语音转文字工具TMSpeech全场景应用指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 在数字化办公与内容创作领域,如何在保护隐私的前提下实现高效语音转文字?TM…...
网页在线编辑 Office 实现|软航控件集成入门实战①
在 OA、ERP、管理系统开发中,网页在线编辑 Office、在线预览 Word/Excel/PPT/PDF是高频刚需。自己从零开发兼容性差、周期长,集成成熟控件是最快、最稳的方案。本文以软航 Office 文档控件为例,从零到一教你完成 Windows 端集成,新…...
Linux Ubuntu 24.04 Server 超简单部署 Fast GPT(新手零踩坑)
前言: Fast GPT 是一款基于大语言模型的知识型平台,支持数据处理、RAG检索、可视化AI工作流编排,能快速搭建专属问答系统,无需复杂开发配置。本文针对 Ubuntu 24.04 Server 系统,用最简洁的步骤完成部署,全…...
SAP EWM开发实战:手把手教你用ABAP OO类 /SCWM/CL_SP_PRD_INB 创建内向交货单
SAP EWM开发实战:基于ABAP OO类实现内向交货单自动化创建 1. 理解内向交货单创建的技术背景 在SAP扩展仓库管理(EWM)系统中,内向交货单(Inbound Delivery)是管理入库流程的核心凭证。与传统的SAP ERP系统不同,EWM模块在设计上采用了更加灵活的…...
机器视觉C# 调用相机:从 USB 摄像头到海康工业相机(WinForms WPF)
🎥 机器视觉C# 调用相机:从 USB 摄像头到海康工业相机(WinForms & WPF) 📝 前言 在工业自动化、医疗影像或简单软件开发中,调用摄像头是一个绕不开的话题。在项目中同时遇到了两种需求: …...
