当前位置: 首页 > news >正文

暗网网站建设/花生壳免费域名注册

暗网网站建设,花生壳免费域名注册,wordpress短信宝,沙河网站建设1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

1.自动化测试分类

  • 接口自动化测试
  • UI自动化测试(移动端自动化测试、Web端自动化测试)

2.选择Selenium作为web自动化工具原因(面试题)

  • 开源免费
  • 支持多个浏览器
  • 支持多个系统
  • 支持多语言
  • Selenium包提供很多供测试使用的API

3.自动化是什么?为什么要做自动化? 

  • 自动化是测试人员为了提高效率或者保证测试质量,减少人力消耗,让代码辅助测试人员来执行测试的一个过程

 4.自动化脚本打开浏览器的工作原理

  •  编写的自动化脚本----创建http请求发送给浏览器驱动----浏览器驱动包含一个http server请求---操控浏览器----执行测试步骤
  • 驱动作用:驱动接收自动化脚本发送过来的http请求,并解析请求发送给浏览器,当浏览器执行完成后,会把结果返回给脚本

5. 使用Java编写Selenium编写的自动化脚本的步骤

  • 创建maven项目,在pom.xml里将依赖导入
<dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version></dependency>
</dependencies>
  • 开始进行自动化脚本的编写
 public void dilireba(){//创建驱动对象ChromeOptions options=new ChromeOptions();options.addArguments("--remote-allow-origins=*");ChromeDriver driver=new ChromeDriver(options);//访问网络driver.get("http://baidu.com");//查找元素并且操作元素driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");driver.findElement(By.cssSelector("#su")).click();//结束会话driver.quit();}

6.查找元素 

  • findElement()     查找当前的一个元素 ,返回值为WebElement
driver.findElement(By.cssSelector("#kw"))
  • findElenments()      查找当前相同多个元素, 返回值为List<WebElement>
List<WebElement> eles=driver.findElements(By.className("hotsearch-item"));//打印每个名称for (WebElement els: eles ) {System.out.println(els.getText());}

7.元素定位 (自动化要求元素定位必须唯一)

  • 选择器:Selector ,选择页面指定元素
driver.findElement(By.cssSelector("#kw"))
  • Xpath
driver.findElement(By.xpath(//*[@id="kw"]))

 8.常见元素操作 

  • 输入文本 sendkeys,仅使用于文字字段
driver.findElement(By.cssSelector("#kw")).sendKeys("小嘉");
  • 点击 click
 driver.findElement(By.cssSelector("#su")).click();
  • 提交  submit,仅适用于表单元素
driver.findElement(By.cssSelector("#su")).submit();
  • 获取文本  getText(),打印这个属性的值
String ret=driver.findElement(By.className("title-content-title")).getText();System.out.println(ret);
  • 清除 clear ,测试是否可以频繁输入
driver.findElement(By.cssSelector("#su")).clear();
  • 获取标题 getTitle()
 System.out.println(driver.getTitle());
  • 获取url  geturl()
 System.out.println(driver.getCurrentUrl());
  •    获取属性的值  getAttribute()
System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("value"));

9.窗口设置

  • 窗口最大化
//窗口最大化driver.manage().window().maximize();
  • 窗口最小化
 //窗口最小driver.manage().window().minimize();
  • 窗口全屏
  driver.manage().window().fullscreen();
  • 手动设置窗口大小
//手动设置driver.manage().window().setSize(new Dimension(1024,4444));
  • 窗口切换(浏览器每次打开一个标签页,就会自动给每个标签页有一个标识,叫做句柄)10
 //输入网址driver.get("http://baidu.com");//点击更多标签页driver.findElement(By.cssSelector("#s-top-left > div > a")).click();//先获取所有标签的句柄Set<String>handles =driver.getWindowHandles();//获取当前页面句柄String curhandle=driver.getWindowHandle();System.out.println("当前页面句柄:"+curhandle);//获取所有的句柄for (String handle: handles) {if (handle!=curhandle){//进行页面切换driver.switchTo().window(handle);}}//查找更多页面的某个元素Thread.sleep(2000);driver.findElement(By.cssSelector("#content > div:nth-child(2) > div:nth-child(2) > a"));Thread.sleep(2000);driver.quit();

10.屏幕截图 

  • 在pom.xml里面导入依赖
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
  • 进行截图
public void test1() throws IOException {//启动驱动ChromeOptions options=new ChromeOptions();options.addArguments("--remote-allow-origins=*");ChromeDriver driver=new ChromeDriver(options);//输入网址driver.get("http:baidu.com");//找到输入框去输入元素driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");//屏幕截图以文件形式File srcfile=driver.getScreenshotAs(OutputType.FILE);//把它放在指定路径String filename="my.png";FileUtils.copyFile(srcfile,new File(filename));driver.quit();}

11.等待 

  • 强制等待:Thread.sleep(时间)
  • 隐式等待:作用于driver的整个生命周期,会一直轮寻判断元素是否存在,如果不存在就等待设置好的时间里不断进行轮询,等到元素全被访问
public void test2(){//启动驱动ChromeOptions options=new ChromeOptions();options.addArguments("--remote-allow-origins=*");ChromeDriver driver=new ChromeDriver(options);//开始隐式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//输入网址driver.get("http:baidu.com");//找到输入框去输入元素driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");driver.quit();}
  • 显示等待: 针对代码一条去设置

new WebDriverWait(driver,Duration.ofSeconds(间)).until(driver.findElement(By.cssSelector("")));

12.浏览器导航 

         //后退回之前状态driver.navigate().back();//前进driver.navigate().forward();//刷新driver.navigate().refresh();

13.弹窗 

  • 将driver对象作用到弹窗上(切换弹窗) driver.switchTo.alert()
  • 确认--accept    取消---dismiss    输入文本----sendkeys
  • 警告弹窗--只有1个按钮     确认弹窗--可以选择确定和取消    提示弹窗--可以输入文本

14.选择框 (可以根据文本选择、根据属性值选择、根据文本选择)

void selectControll() throws InterruptedException {
//        driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%AF%95/selenium4html/selenium-html/select.html");
//        Thread.sleep(3000);
//         WebElement ele = driver.findElement(By.cssSelector("#ShippingMethod"));
//        //先创建选择框对象
//        Select select = new Select(ele);
//        Thread.sleep(3000);
//        //根据文本来选择select.selectByVisibleText("UPS Next Day Air ==> $12.51");
//        //根据属性值来选择select.selectByValue("12.51");
//        //根据序号来选择
//        select.selectByIndex(1);   序号从0开始
//        Thread.sleep(3000);
//        driver.quit();
//    }

15.执行脚本 executeScript(js代码)

void scriptControll() throws InterruptedException {driver.get("https://baidu.com/");Thread.sleep(3000);//执行js命令:让页面置顶/置底//如果想要滑到最小面,值设置的大一些就行         driver.executeScript("document.documentElement.scrollTop=500");Thread.sleep(3000);//0就是顶部driver.executeScript("document.documentElement.scrollTop=0");driver.get("https://www.baidu.com");Thread.sleep(3000);driver.executeScript("var texts = document.querySelector('#kw');texts.value='1111'");Thread.sleep(3000);driver.quit();}

16.文件上传

void fileUploadControll() throws InterruptedException {      driver.get("url的路径");
Thread.sleep(3000);driver.findElement(By.cssSelector("body > div > div > input[type=file]")).sendKeys("D:\\file\\比特教务\\测试\\selenium4html\\selenium-html\\upload.html");
//写入上传文件的文件夹路径和文件名Thread.sleep(3000);driver.quit();

17.浏览器参数的设置(需要在创建对象之前设置)

测试人员只会查看结果,不关注过程,所以需要设置无头模式(自动执行,我们在界面上看不到的),我们只可以在终端看见效果

      void paramsControll(){//百度搜索迪丽热巴//先创建选项对象,然后再设置浏览器参数ChromeOptions options = new ChromeOptions();options.addArguments("-headless");ChromeDriver driver = new ChromeDriver(options);driver.get("https://www.baidu.com");driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");driver.findElement(By.cssSelector("#su")).click();driver.quit();

相关文章:

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试&#xff08;移动端自动化测试、Web端自动化测试&#xff09; 2.选择Selenium作为web自动化工具原因&#xff08;面试题&#xff09; 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…...

uniapp新增一条数据增加一个折叠栏

//折叠栏 <uni-collapse classcollapse refcollapse><uni-collapse-item v-for"(item, index) in dataForm.beefCattleNums" :key"index" :title"item.fatCalfNum" classcollapse-item title-bordershow :borderfalse clicktoggleItem(…...

【Netty技术专题】「原理分析系列」Netty强大特性之Native transports扩展开发实战

Netty强大特性之Native transports技术原理分析 背景介绍JNI概念介绍不同平台的JNI实现 使用Native transports库Maven的分类器&#xff08;Classifier&#xff09;使用Linux native transport使用MacOS/BSD native transport库构建native transport库Linux版本要求MacOS/BSD版…...

1-1 动手学深度学习v2-线性回归-笔记

简化核心模型 假设1: 影响房价的关键因素是卧室个数&#xff0c;卫生间个数和居住面积&#xff0c;记为 x 1 x_{1} x1​&#xff0c; x 2 x_{2} x2​&#xff0c; x 3 x_{3} x3​假设2: 成交价是关键因素的加权和 y w 1 x 1 w 2 x 2 w 3 x 3 b yw_{1}x_{1}w_{2}x_{2}w_{3…...

算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希

大家好&#xff0c;我是星恒&#xff0c;今天给大家带来的是一道需要感觉规律的题目&#xff0c;只要读懂题目中的规律&#xff0c;就可以做出来了 这道题用到了哈希&#xff0c;还有一个关键点比较类似循环队列 题目&#xff1a;leetcode 2808 给你一个下标从 0 开始长度为 n…...

canvas实现涂鸦画板功能

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…...

6-3、T型加减速单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;根据前两节内容&#xff0c;已完成所有计算工作&#xff0c;本节内容介绍具体单片机程序流程及代码 一、程序流程图 根据前两节文章内容可知&#xff0c;T型加减速的关键内容是运动类型的判断以及定时…...

Flutter组件 StatefulWidget、StatelessWidget 可继承写法

前言 学过Java的同学&#xff0c;应该都知道面向对象语言的三大特征&#xff0c;封装、继承、多态&#xff1b; Dart也是面向对象的语言&#xff0c;但是在Flutter中的很多组件都被下划线 _ 标记为私有&#xff0c;导致无法继承&#xff0c;本文将介绍一种非私有的创建组件写…...

skywalking链路追踪

skywalking 1.简介1.1 skywalking介绍1.2 链路追踪框架对比1.3 Skywalking架构 2 环境构建2.1 windows环境2.1.1 启动skywalking服务和UI界面2.1.2 在IDEA启动项目中使用Skywalking2.1.3 skywalking持久化 2.2 linux环境 1.简介 微服务架构已经是一个很通用的系统架构&#xf…...

如何在苹果Mac上进行分屏,多任务处理?

Apple 在 macOS Catalina 中引入了 Split View&#xff0c;让您可以同时查看两个应用程序。如果同时处理多个应用程序&#xff0c;但在它们之间切换时感到沮丧&#xff0c;小编教给大家在 Macbook Pro/Air 或 iMac 上使用分屏功能流畅地进行多任务处理。 注意&#xff1a;您可…...

【Java EE】----Spring框架创建和使用

1.Spring框架创建 创建一个maven项目 添加Spring框架支持 <dependencies> 上下文<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version></depende…...

UE4 C++ 静态加载类和资源

静态加载类和资源&#xff1a;指在编译时加载&#xff0c;并且只能在构造函数中编写代码 .h //增加所需组件的头文件 #include "Components/SceneComponent.h" //场景组件 #include "Components/StaticMeshComponent.h" //静态网格体组件 #include &qu…...

洛谷C++简单题小练习day9—[AHOI2017]寻找探监点

day9--[AHOI2017]寻找探监点--2.7 习题概述 题目描述 一个nn 的网格图&#xff08;标号由 1,1 开始&#xff09;上有 m 个探测器&#xff0c;每个探测器有个探测半径 r &#xff0c;问这 nn 个点中有多少个点能被探测到。 输入格式 第一行 3 个整数 n,m,r。 接下来 m 行&…...

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…...

思科模拟器实验合集

目 录 实验一 常用网络命令的使用.................................... 1 实验二 双绞线制作.................................................. 12 实验三 网络模拟软件.............................................. 15 实验四 交换机基本配置..................…...

18.AUTOSAR 网络管理系统(一)

目录 1.为什么需要整车网络管理 2.本地唤醒和网络唤醒 3.小结 1.为什么需要整车网络管理 在描述AUTOSAR网络管理细节前&#xff0c;大家可以思考几个问题&#xff1a; 1.网络管理为整车系统提供了什么样的服务&#xff1f; 2.整车网络视角看&#xff0c;每个ECU的上下电是…...

802.11 MAC帧介绍

控制帧 RTS&#xff08;Request To Send&#xff09;&#xff1a;用于申请无线媒介的使用时间CTS&#xff08;Clear To Send&#xff09;&#xff1a;用于回复RTS帧ACK&#xff1a;对MAC帧的肯定确认PS-POLL&#xff1a;STA用于从AP中获取因省电模式而缓存的数据&#xff0c;只…...

【高阶数据结构】B-树详解

文章目录 1. 常见的搜索结构2. 问题提出使用平衡二叉树搜索树的缺陷使用哈希表的缺陷 3. B-树的概念4. B-树的插入分析插入过程分析插入过程总结 5. B-树的代码实现5.1 B-树的结点设计5.2 B-树的查找5.3 B-树的插入实现InsertKey插入和分裂测试 6. B-树的删除&#xff08;思想&…...

elementui常用组件-个人版(间断更新)

Dialog 对话框 el-dialog <el-dialogtitle"提示":visible.sync"dialogVisible"width"30%":before-close"handleClose"><span>这是一段信息</span><span slot"footer" class"dialog-footer"…...

无人机在化工消防救援中的应用,消防无人机应用场景分析

火灾对社会环境具有较大影响&#xff0c;因此需要重视消防灭火救援工作&#xff0c;注重现代化技术的运用&#xff0c;将无人机应用到救援过程并保障其应用质量。无人机是一项重要技术&#xff0c;便于消防灭火救援操作&#xff0c;使救援过程灵活展开&#xff0c;排除不利影响…...

java设计模式- 建造者模式

一 需求以及实现方式 1.1 需求描述 我们要创建一个表示汽车的复杂对象&#xff0c;汽车包含发动机、轮胎和座椅等部分。用传统方式创建&#xff0c;代码如下 1.2 传统实现方式 1.抽象类 public abstract class BuildCarAbstaract {//引擎public abstract void buildEng…...

【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)

目录 1 -> 再谈构造函数1.1 -> 构造函数体赋值1.2 -> 初始化列表1.3 -> explicit关键字 2 -> static成员2.1 -> 概念2.2 -> 特性 3 -> 友元3.1 -> 友元函数3.2 -> 友元类 4 -> 内部类5 -> 匿名对象6 -> 拷贝对象时的一些编译器优化 1 -…...

解决TSP旅行商问题3个可以用Python编程的优化路径算法

旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;是一个经典的组合优化问题&#xff0c;它要求找到访问一系列城市并返回起点的最短可能路线&#xff0c;同时每个城市仅访问一次。这个问题是NP-hard的&#xff0c;意味着没有已知的多项式时间复杂度的精确算…...

10英寸安卓车载平板电脑丨ONERugged车载工业平板:解决农业工作效率

农业是人类社会的基石之一&#xff0c;而农业工作效率的提升一直是农民和农业专业人士关注的重要议题。随着技术的不断进步&#xff0c;车载工业平板成为了解决农业工作效率的创新解决方案。本文将探讨车载工业平板如何为农业带来巨大的改变&#xff0c;提高农民的工作效率和农…...

Mysql报错:too many connections

1 问题原因 MySQL报错“too many connections”通常是由于数据库的最大连接数超过了MySQL配置的最大限制。有以下几个原因: (1)访问量过高:当MySQL服务器面对大量的并发请求时,已经建立的连接数可能会不足以处理所有的请求,从而导致连接池耗尽、连接被拒绝、出现“too …...

1Panel面板如何安装并结合内网穿透实现远程访问本地管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…...

Linux(Debian系)的Python导入pandas包,报错:ImportError: No module named ‘_bz2‘

前言&#xff1a; 硬件操作系统国产化路漫漫&#xff0c;由此可见华为的厉害。 今天在香橙派上用自己编译的python导入pandas时&#xff0c;报错&#xff1a; from _bz2 import BZ2Compressor, BZ2Decompressor ImportError: No module named _bz2ImportError: No module name…...

React useEffect使用

第一 export default function App() { const [name,setname] useState(huhu) useEffect(()>{ setname(name.substring(0,1).toUpperCase()name.substring(1)) },[name]) //[name,age]//可以有多个参数 //带参数&#xff0c;第一次默认执行一次&#xff0c;第二次name更新…...

三网码支付系统源码,三网免挂有PC软件,有云端源码,附带系统搭建教程

搭建教程 1.先上传云端源码 然后配置Core/Config.php文件里面数据库信息注改&#xff1b;数据库帐号密码 2.云端源码里面Core/Api_Class/Instant_Url_List.php文件配置终端地址注改&#xff1b;第4 http://终端地址/ 3.导入云端数据库 账号admin 密码123456注改&#xff1…...

编程笔记 html5cssjs 073 JavaScript Object数据类型

编程笔记 html5&css&js 073 JavaScript Object数据类型 一、创建 Object二、Object 类型的属性与方法三、示例四、参考小结 JavaScript 中的 Object 数据类型是该语言中最复杂也最灵活的数据类型之一&#xff0c;它是其他所有内置对象和用户自定义对象的基础。在 JavaS…...