自动化测试selenium篇(二)

1.  操作测试对象

1.1 普通操作

测试代码如下所示:

private static void Test03() throws InterruptedException {//创建一个驱动WebDriver webDriver = new ChromeDriver();//打开百度首页webDriver.get("https://www.baidu.com");//找到百度搜索输入框WebElement search_input = webDriver.findElement(By.cssSelector("#kw"));//在输入框中输入软件测试search_input.sendKeys("沈梦瑶");//找到百度搜索输入框//清空百度搜索输入框里面的内容search_input.clear();//向百度搜索输入框中搜索前端search_input.sendKeys("袁一琦");//找到百度一下,进行点击webDriver.findElement(By.cssSelector("#su")).click();//校验结果是不是有前端int flag = 0;sleep(3000);List<WebElement> search_results = webDriver.findElements(By.cssSelector("a em"));for(int i = 0;i < search_results.size();i++){if(search_results.get(i).getText().equals("袁一琦")){flag = 1;break;}}if(flag == 1){System.out.println("测试通过");}else {System.out.println("测试不通过");}}

测试页面如下所示:

1、首先出现沈梦瑶在搜索框中,其次搜索框中被换为袁一琦,并进行百度搜索;

        同时idea显示结果如下所示:

1.2 click与submit 

        click:

 private static void TrueTest() {//创建一个驱动WebDriver webDriver = new ChromeDriver();//打开百度首页webDriver.get("https://www.baidu.com");//找到百度搜索输入框WebElement news_button = webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)"));news_button.click();}

        页面如下:

从百度首页进入到新闻链接的新闻页面;

        submit:

 private static void FalseTest() {//创建一个驱动WebDriver webDriver = new ChromeDriver();//打开百度首页webDriver.get("https://www.baidu.com");//找到百度搜索输入框WebElement news_button = webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)"));news_button.submit();webDriver.quit();}

        会出现报错,报错信息如下,我们要找的元素没有找到;

         

submit和click的区别:

        submit操作的元素需要放在form标签中,否则会报错;

        click则没有上面的限制,所以我们一般推荐使用click; 

1.3 添加等待

        添加强制等待sleep:

                sleep休眠 添加休眠非常简单,我们需要引入time 包,就可以在脚本中自由的添加休眠时间了,这里的休眠指固 定休眠

        添加智能等待:

        1、添加隐式等待

        通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)的用法比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。代码如下:

private static void Test04() throws InterruptedException {//创建一个驱动WebDriver webDriver = new ChromeDriver();//打开百度首页webDriver.get("https://www.baidu.com");//找到百度搜索输入框WebElement search_input = webDriver.findElement(By.cssSelector("#kw"));//在输入框中输入软件测试search_input.sendKeys("沈梦瑶");//找到百度搜索输入框//清空百度搜索输入框里面的内容search_input.clear();//向百度搜索输入框中搜索前端search_input.sendKeys("袁一琦");//找到百度一下,进行点击webDriver.findElement(By.cssSelector("#su")).click();//校验结果是不是有前端int flag = 0;webDriver.manage().timeouts().implicitlyWait(5, SECONDS);List<WebElement> search_results = webDriver.findElements(By.cssSelector("a em"));for(int i = 0;i < search_results.size();i++){if(search_results.get(i).getText().equals("袁一琦")){flag = 1;break;}}if(flag == 1){System.out.println("测试通过");}else {System.out.println("测试不通过");}}

        我们的驱动器在按照代码逻辑寻找需要寻找的定位元素,当找的时候不管等待时间是否满足,我们依旧继续参加下面的代码逻辑;如果过了相对设置的时间依旧没有找到定位元素,我们的idea就会就行报错预警; 

        2、添加显示等待

  private static void Test05() {WebDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com");//使用一下显示等待WebDriverWait wait = new WebDriverWait(webDriver,3);wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#s-top-left > a:nth-child(1)")));}

        验证当前的元素能否被点击;

        所谓显示等待就是判断我们当前要定位的元素是否已经被找到来判断是否应该继续等待;

1.4 getvalue()

getAttribute("value");

         该操作元素可以获取元素的属性值,其中value代表的是元素的属性,如果该元素没有属性值得话,此时的结果就是null;

1.5 打印信息

        1、获取title

private static void Test07() {WebDriver webDriver = new ChromeDriver();// 打开百度首页webDriver.get("https://www.baidu.com/");// 获取百度页面titleString title = webDriver.getTitle();// 如果获取到的title等于“百度一下,你就知道”,测试通过if(title.equals("百度一下,你就知道")) {System.out.println("测试通过");} else {// 否则测试不通过System.out.println("测试不通过");}webDriver.quit();}

        2、获取url

private static void Test08() {// 创建一个驱动WebDriver webDriver = new ChromeDriver();// 打开百度首页webDriver.get("https://www.baidu.com/");// 获取当前页面的urlString url = webDriver.getCurrentUrl();// 如果获取到的url=https://www.baidu.com/,测试通过// 否则测试不通过if(url.equals("https://www.baidu.com/")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}// 关闭浏览器webDriver.quit();}

2. 浏览器的操作

2.1 浏览器最大化

        webdriver.manage().window().maximize();

  private static void Test09() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com");// 浏览器最大化webDriver.manage().window().maximize();sleep(3000);// 定位到换一换这个元素String expect_str = webDriver.findElement(By.cssSelector("#hotsearch-refresh-btn > span")).getText();// 如果换一换这个按钮存在,测试通过if(expect_str.equals("换一换")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}}

2.2 设置浏览器大小

        webdriver.manage().window().setsize(new dimension(xxx,xxx));

private static void Test10() throws InterruptedException {// 创建一个驱动WebDriver webDriver = new ChromeDriver();// 打开百度首页webDriver.get("https://www.baidu.com/");// 设置浏览器大小200*200webDriver.manage().window().setSize(new Dimension(200, 400));// 校验百度搜索输入框存不存在sleep(3000);WebElement webElement = webDriver.findElement(By.cssSelector("#kw"));// 如果存在,测试通过// 否则测试不通过if(webElement == null) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}

2.3 操作浏览器的前进、后退

        浏览器后退:webDriver.navigate().back();

private static void Test11() throws InterruptedException {// 创建一个浏览器驱动WebDriver webDriver = new ChromeDriver();// 打开百度首页webDriver.get("https://www.baidu.com/");// 输入“沈梦瑶”webDriver.findElement(By.cssSelector("#kw")).sendKeys("沈梦瑶");// 点击“百度一下”按钮webDriver.findElement(By.cssSelector("#su")).click();sleep(3000);// 浏览器后退webDriver.navigate().back();sleep(3000);// 获取当前页面urlString url = webDriver.getCurrentUrl();System.out.println("当前的url等于" + url);// 如果当前url等于https://www.baidu.com/测试通过// 否则测试不通过if(url.equals("https://www.baidu.com/")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}}

        浏览器前进:webDriver.navigate().forward(); 

private static void Test12() throws InterruptedException {// 创建一个浏览器驱动WebDriver webDriver = new ChromeDriver();// 打开百度首页
//        webDriver.get("https://www.baidu.com/");webDriver.navigate().to("https://www.baidu.com/");// 输入张三,#kwwebDriver.findElement(By.cssSelector("#kw")).sendKeys("张三");sleep(3000);// 点击百度一下按钮,#suwebDriver.findElement(By.cssSelector("#su")).click();sleep(3000);// 浏览器后退webDriver.navigate().back();sleep(3000);// 浏览器在进行前进webDriver.navigate().forward();// 获取当前的urlsleep(3000);String cur_url =webDriver.getCurrentUrl();// 如果当前url不等于"https://www.baidu.com"测试通过// 否则测试不通过System.out.println("当前的url:" + cur_url);if(cur_url.equals("https://www.baidu.com/")) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}

 

2.4 控制浏览器滚动条

  // 浏览器滚动条滑到最下面((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");// 浏览器滚动条滑到最上面((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=0");

        对于滚动条的操作我们需要使用js代码来控制,所以我们将webdriver强行转换为JavascriptExecutor类型,然后对该类型执行js语句;

private static void Test13() throws InterruptedException {// 创建一个驱动WebDriver webDriver = new ChromeDriver();// 打开百度首页webDriver.get("https://www.baidu.com/");// 输入鲜花webDriver.findElement(By.cssSelector("#kw")).sendKeys("沈梦瑶");// 点击百度一下按钮webDriver.findElement(By.cssSelector("#su")).click();// 等待3秒sleep(3000);// 浏览器滚动条滑到最下面((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");sleep(3000);// 浏览器滚动条滑到最上面((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=0");// 等待3秒sleep(3000);// 浏览器关闭webDriver.quit();}

ps:本次的内容就到这里了,如果对你有所帮助的话就请一键三连哦!!!

封面截图来自刘姝贤的毕业公演的pv;

url:【流水线的流水账】江西几日游_哔哩哔哩_bilibili

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

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

相关文章

通过AI技术克服自动化测试难点(下)

前面的文章里我们对可以应用到测试中的AI技术做了整体介绍&#xff0c;详细介绍了OpenCV技术、OCR技术和神经网络&#xff0c;本文我们继续为大家介绍卷积神经网络、数据集以及AI技术在其他方面和测试相关的创新。 卷积神经网络整体上的原理是这样的&#xff0c;首先在底层特征…

随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题

跨域问题产生的原因:浏览器同源策略 后面的通俗解释小标题下的内容是便于大家理解同源策略和跨域问题。 而同源策略和跨域问题这两个小标题下的内容虽然比较专业不容易阅读,但是还是建议大家花时间理解并记忆,因为这是前端面试中的常考点。 同源策略 同源策略(Same-0rig…

TCP(Transmission Control Protocol,传输控制协议)整理

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;它是OSI&#xff08;Open System Interconnection&#xff0c;开放式系统互联&#xff09;模型中的第四层协议&#xff0c;通常使用于网络中的…

【linux系统】进程

文章目录 进程和PCBlinux与进程的相关命令PS linux下的PCB进程标识符父子进程fork 进程状态磁盘睡眠 -- D暂停和跟踪暂停 -- T和t僵尸进程 -- Z孤儿进程 进程优先级 进程地址空间再谈fork进程地址空间分布虚拟地址和页表mm_struct 进程控制进程终止进程退出码信号 进程等待进程…

【翻译】在 Python 应用程序中使用Qt Designer的UI文件

原文地址&#xff1a;Using a Designer UI File in Your Qt for Python Application 直接上图&#xff0c;上代码 将UI文件转为Python 为了演示&#xff0c;我们使用 Qt Widgets 简单示例说明。 这个应用程序由一个源文件 easing.py、一个 UI 文件 form.UI、一个资源文件 ea…

Linux补丁命令patch

1、生成补丁&#xff0c;创建两个相同的目录结构&#xff0c;修改里面文件的内容 diff -uNr old_version new_version > update.patch 2、打补丁&#xff0c;应用到一个名为 target_version/ 的目录上&#xff0c;该目录与old_version/ 文件相同。 cd target_version patc…

考研笔记之操作系统(四) - 文件管理

文件管理 1. 简介1.1 前情回顾1.2 文件的属性1.3 文件内部数据的组织方式1.4 操作系统向上提供的文件功能1.5 文件应如何放在外存 2. 文件的逻辑结构2.1 无结构文件2.2 有结构文件2.2.1 顺序文件2.2.2 索引文件2.2.3 索引顺序文件2.2.4 多级索引顺序文件 3. 文件目录3.1 基本概…

【网络】用网线连接两台电脑实现远程桌面

目录 1. 准备工作1.1 硬件要求1.2 软件要求 2. 网络连接2.1 直接连接2.2 通过路由器连接 3. 配置IP地址3.1 设置IP地址3.2 检查连接 4. 启用远程桌面4.1 启用远程桌面4.2 添加用户4.3 防火墙设置 5. 远程连接5.1 使用远程桌面连接5.2 使用快捷方式 6. 常见问题解决7. 额外建议结…

1422. 分割字符串的最大得分【字符串】

文章目录 1422. 分割字符串的最大得分解题思路Go代码 1422. 分割字符串的最大得分 1422. 分割字符串的最大得分 给你一个由若干 0 和 1 组成的字符串 s &#xff0c;请你计算并返回将该字符串分割成两个 非空 子字符串&#xff08;即 左 子字符串和 右 子字符串&#xff09;所…

使用3080ti运行blip2的

使用3080ti运行blip2的案例 注意&#xff01;blip2很吃显存&#xff0c;需要大于80GB显存的卡。我最后安装的所有包的版本信息&#xff08;python 3.9 &#xff09;以供参考&#xff1a; 首先&#xff0c;我在运行blip2的demo的时候显存用了80G以上&#xff0c;所以大家卡的显存…

Vue 中引入 ECharts 的详细步骤与示例

在Vue项目中引入ECharts&#xff0c;可以让我们轻松地在前端页面中展示各种图表。ECharts 是一个基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型和强大的配置选项&#xff0c;使得在Vue项目中集成和使用变得非常方便。 一、准备工作 创建Vue项目&…

moectf-Web题解

1、弗拉格之地的入口 2、垫刀之路01: MoeCTF&#xff1f;启动&#xff01; 3、ez_http 4、ProveYourLove 5、弗拉格之地的挑战 6、ImageCloud前置 7、垫刀之路02: 普通的文件上传 8、垫刀之路03: 这是一个图床 9、垫刀之路05: 登陆网站 10、垫刀之路06: pop base mini …

【工具】VSCODE下载,配置初次设置

打开 settings.json 文件&#xff0c;包含了 Visual Studio Code (VSCode) 中的各种用户配置。 {"files.associations": {"*.vue": "vue","*.wpy": "vue","*.wxml": "html","*.wxss": "…

软件架构设计中的微内核架构是什么

Visual Studio Code 是一个广受欢迎的代码编辑器。它同样采用微内核架构&#xff0c;核心是一个轻量级的编辑器引擎&#xff0c;提供了基本的文本编辑、代码高亮、语法检查等功能。 通过安装不同的扩展插件&#xff0c;用户可以添加对各种编程语言的支持、调试功能、版本控制集…

React生命周期案例详解

React 组件的生命周期是指组件从创建、渲染、更新到卸载的整个过程。在 React 16 及之前的版本中&#xff0c;生命周期方法被分为几个不同的阶段&#xff1a;挂载&#xff08;Mounting&#xff09;、更新&#xff08;Updating&#xff09;、卸载&#xff08;Unmounting&#xf…

Java值传递、序列化详解

Java 值传递详解 说到参数&#xff0c;我们先来搞懂一下这两个概念 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数&#xff08;有参的方法&#xff09;&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff08;实际参数&#xff0c;…

QT实现Opencv图像处理

案例 基于QT的人脸识别 pro文件需要加以下代码 INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv2 LIBS E:/opencv/o…

D34【python 接口自动化学习】- python基础之输入输出与文件操作

day34 文件关闭 学习日期&#xff1a;20241011 学习目标&#xff1a;输入输出与文件操作&#xfe63;-46 常见常新&#xff1a;文件的关闭 学习笔记&#xff1a; 文件关闭的内部工作过程 close&#xff08;&#xff09;函数 with语句 常用的打开关闭文件 # 文件关闭 # 方式…

【Python】操作列表

Python是一种功能强大的编程语言&#xff0c;它提供了丰富的操作列表的方法。列表是一种有序、可变的数据类型&#xff0c;可以存储任意类型的元素。下面是一些常用的操作列表的方法&#xff1a; 1. 创建列表&#xff1a;可以使用方括号 [] 或者 list() 函数来创建一个列表。例…

kubernetes详解

一、kubernetes的定义 Kubernetes (希腊语"舵手" 或 "飞行员") 由Joe Beda&#xff0c;Brendan Burns和Craig McLuckie创立&#xff0c;并由其他谷歌工程师&#xff0c;包括Brian Grant和Tim Hockin进行加盟创作&#xff0c;并由谷歌在2014年首次对外宣布。…