一、以雅虎网站为例,当我们在登录时,输入错误的用户名然后点击“下一步”,用户名输入框会提示红色字体,这个时候我们就将页面进行截图。

http://commons.apache.org/proper/commons-io/download_io.cgi

 package basicweb;

 import java.io.File;
import java.util.concurrent.TimeUnit; import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver; class Screenshots { WebDriver driver;
String url;
@BeforeEach
void setUp() throws Exception {
driver = new ChromeDriver();
url = "https://login.yahoo.com/config/login?.src=fpctx&.intl=us&.lang=en-US&.done=https%3A%2F%2Fwww.yahoo.com";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(2000,TimeUnit.SECONDS);
} @Test
void test() throws InterruptedException {
driver.get(url);
// 查找到登录文本框,输入test
driver.findElement(By.xpath("//input[@name='username']")).sendKeys("test");
// 点击登录按钮
driver.findElement(By.xpath("//input[@id='login-signin']")).sendKeys(Keys.ENTER);
} // 创建一个获取随机字符串的方法用来给截图的内容图片赋值
// 在调用该方法时,列如length赋值是5,那么文件名的长度就为5,由5个字符组成
public static String getRandomString(int length) {
// StringBuilder 是一个可变的字符序列
StringBuilder sb = new StringBuilder();
String characters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPAZSXDCFVGBHNJMKL1234567890";
// for循环从定义的characters字符串中随机取出指定length长度的字符串
for(int i = 0; i<length;i++) {
// Math.random()取0到1之间的一个随机数然后乘以characters字符串的长度,得到一个double类型的数据,因此要强制转换成int类型得到一个整数,成为characters字符串的索引
int index = (int)(Math.random() * characters.length());
// 通过charAt获得字符串上索引的值,来作为append方法的参数
// append方法是为了把获取到的字符全部连接到一起,先取一个字符放到bulider缓存区中,然后再循环追加取剩下的值,直到满足length长度
sb.append(characters.charAt(index));
}
// 然后将取到的字符串值返回
return sb.toString();
} @AfterEach
void tearDown() throws Exception {
Thread.sleep(2000);
// 截图首先需要一个文件名,调用上面定义的随机生成文件名的方法,.png表示文件的扩展名
String fileName = getRandomString(10)+".png";
// 存放图片的路径
String directory = "C:\\Users\\acer\\Desktop\\";
// 以文件的形式输出
// 把driver转换为TakesScreenshot类型
File sourceFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// 复制文件
FileUtils.copyFile(sourceFile,new File(directory+fileName));
driver.quit();
}
}

运行结果:成功截图且截图结果与预期结果一致

注意:(在实现截图功能的过程中遇到一个问题浪费了我一下午的时间)

雅虎用户名输入框在输入错误的用户名或者为空的情况下点击登录按钮,用户名输入框会出现红色的提示性文字。

一开始我使用的是click来进行点击,但始终未成功,

driver.findElement(By.xpath("//input[@id='login-signin']")).click();

然后我就想是不是定位有问题、farme标签等等情况导致我定位不成功,在查询资料时发现因为各个网站功能实现方式有差异,所以导致click对有些input标签不生效,而登录按钮正是input标签,于是我改用sendkeys发生Enter按键操作来实现,成功,nice。(需要导包keys包)

driver.findElement(By.xpath("//input[@id='login-signin']")).sendKeys(Keys.ENTER);

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

章节十四、5- web页面的截图的更多相关文章

  1. 章节十四、9-Actions类鼠标悬停、滚动条、拖拽页面上的元素

    一.鼠标悬停 1.在web网站中,有一些页面元素只需要我们将鼠标指针放在上面就会出现被隐藏的下拉框或者其它元素,在自动化的过程中我们使用Actions类对鼠标进行悬停操作. 2.案例演示 packag ...

  2. python学习笔记(十 四)、web.py

    使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...

  3. 章节十四、3-执行JavaScript命令

    一.网页页面都是由html+css和javaScript组成的,如果页面中没有javaScript的存在,就不会有操作动作的执行,例如页面上你点击的按钮或者链接都离不开javaScript.(这一节不 ...

  4. Spring Boot教程(二十四)Web应用的统一异常处理

    我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...

  5. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...

  6. 章节十四、7-如何切换到iFrame

    以下案例使用https://jqueryui.com/网站为例. 一.如何确定元素是否包含在iFarme中? 1.按F12打开发者选项,定位到指定的元素. 2.向上查找元素是否被包含在ifarme标签 ...

  7. 章节十四、8-javaScript弹框处理

    一.javaScript弹框没有id.也没有xpath,在F12开发者选项中无法直接通过鼠标去选择弹窗来确定元素在代码中的位置. 弹窗有两种,一种实只有"确定"按钮的alert类型 ...

  8. 章节十四、2-自动完成功能-Autocomplete

    一.什么是自动匹配功能? 很多网站都有自动匹配功能,列如你在使用天猫搜索商品时,输入“鞋”,输入框的下面会出现很多与“鞋”有关的选项. 二.以https://www.expedia.com/网站的城市 ...

  9. Selenium系列(十四) - Web UI 自动化基础实战(1)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

随机推荐

  1. Mysql—数据备份与恢复

    数据备份 # 备份单个数据库 [root@localhost ~]# mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql [root@localhos ...

  2. python3.5.3rc1学习六:画图

    # 可以设置颜色,g代表green, r代表red,y代表yellow,b代表blue# linewidth = 5,设置线条粗细 # label 设置线条名称 ##plt.plot(x,y,'b', ...

  3. Loadrunner|录制脚本时出现乱码的解决方式

    1.进入options 2. 保存后,再录制到脚本就不会有乱码了!

  4. SpringMVC详细流程(一)

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模 ...

  5. Node.js中的模块接口module.exports

    在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.在此做了个简单的总结. ...

  6. Nginx 安装与部署配置

    下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...

  7. powersploit简介

    一.PowerSploit简介 PowerSploit是GitHub上面的一个安全项目,上面有很多powershell攻击脚本,它们主要被用来渗透中的信息侦察.权限提升.权限维持. Powershel ...

  8. 修改 Oracle 数据库实例字符集

    Ø  简介 在 Oracle 中创建数据库实例后,就会有对应使用的编码字符集.当我们设置的字符集与操作系统或者其他软件字符集不一致时,就会出现个字符长度存储一个汉字. 2.   SIMPLIFIED ...

  9. 给 VS2017、VS2019 安装 ILSpy 插件

    关于 ILSpy is the open-source .NET assembly browser and decompiler. ILSpy 主页地址:https://github.com/icsh ...

  10. 【03】Nginx:location / root / alias

    写在前面的话 前面我们谈了 nginx 基础的 WEB 服务配置以及定制我们的日志显示格式,接下来我能更加详细的说说 server 字段. location 字段 在 Server 中,如果我们只是一 ...