UI自动化测试执行过程中,当遇到检查失败的情况,往往会发现打印的log并不能有效地帮助我们定位问题。我们需要失败时刻的屏幕截图来重现当时的失败场景,进而排查出错原因。
基于这种需求,调研了下Selenium的屏幕截图功能。使用起来很方便,我自己封装了一个静态方法,关键部分是try包含的代码。实现代码如下:
Selenium2.0(WebDriver)实现
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
public static void screenShot(WebDriver driver) {
String dir_name = "screenshot"; // 这里定义了截图存放目录名
if (!(new File(dir_name).isDirectory())) { // 判断是否存在该目录
new File(dir_name).mkdir(); // 如果不存在则新建一个目录
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss");
String time = sdf.format(new Date()); // 这里格式化当前时间,例如20120406-165210,后面用的着
try {
File source_file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); // 关键代码,执行屏幕截图,默认会把截图保存到temp目录
FileUtils.copyFile(source_file, new File(dir_name + File.separator + time + ".png")); // 这里将截图另存到我们需要保存的目录,例如screenshot\20120406-165210.png
} catch (IOException e) {
e.printStackTrace();
}
}
另外值得一提的是,这样截出来的图,如果页面过长出现滚动条,是会把完整的页面都截取的。
Selenium1.0实现
Selenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com.hk");
selenium.start();
selenium.open("http://www.google.com.hk/");
selenium.windowMaximize();
selenium.windowFocus();
selenium.captureEntirePageScreenshot("screenshot.png", "");
似乎只能在Selenium RC上运行,以及Firefox浏览器。。Selenium1.0有个CaptureScreenshot方法也能实现屏幕截图。CaptureScreenshot截取浏览器内可见部分,而captureEntirePageScreenshot截取浏览器内所有内容。
相关推荐
“webdriver4ext:具有Node.JS的Selenium Web Driver应用程序”这个标题表明我们正在讨论一个基于Node.js的项目,该项目利用Selenium WebDriver进行Web自动化测试。WebDriver是一个跨平台的API,允许程序员控制Web...
4. **WebDriver API**:介绍VB6中使用的主要WebDriver接口,如`Driver`对象、`WebElement`对象等,以及它们的方法和属性,如`Get`方法用于导航,`FindElementById`或`FindElementByXPath`用于查找页面元素,`Click`...
### 第4章:Remote WebDriver 1. **使用 Remote WebDriver**:允许在远程服务器上运行测试,通过 `RemoteWebDriver` 类实现。 2. **Selenium Server**:作为客户端和远程浏览器之间的中间件,处理请求并分发到相应...
4. 修改注册表:在Windows注册表中找到Google更新相关的键值,并禁用自动更新。 在进行这些操作时,建议先关闭网络连接,以确保在更改设置期间不会接收到新的更新。完成设置后,记得重启电脑以使更改生效。 压缩包...
4. WebDriver API:了解并熟练使用WebDriver API是至关重要的。例如,`driver.get(url)`用于导航到指定的URL,`driver.find_element_by_*`系列方法用于查找页面上的元素,`element.click()`用于模拟点击事件,`...
WebDriver 是一个用于自动化浏览器操作的接口,它是Web测试领域中的一个重要工具。WebDriver允许开发者编写脚本,模拟用户在浏览器上的各种交互行为,如点击、输入、导航等,从而实现对Web应用的功能验证和性能测试...
4. **导航和操作**:使用 WebDriver 对象的方法,如 `get()` 跳转到指定 URL,`findElement()` 查找页面元素,`click()` 点击元素,`sendKeys()` 输入文本等。 5. **断言和验证**:编写测试逻辑,使用 `assert` 或...
WebDriver 命令参考手册 WebDriver 命令参考手册是 WebDriver 的一个重要组件,提供了 WebDriver 的命令参考手册。该手册详细介绍了 WebDriver 的各种命令和协议,旨在帮助开发者更好地理解和使用 WebDriver。 ...
4. **Support Library**:Selenium提供了Support Library,包含了许多实用的辅助类和枚举,如By、WebElement、Actions等,它们简化了元素定位、执行复杂操作和异常处理。 5. **Client-Comms JAR**:这是WebDriver与...
4. **Firefox WebDriver**,又称GeckoDriver,由Mozilla公司提供,用于与Firefox浏览器通信。不同于其他驱动,GeckoDriver不直接控制浏览器,而是作为中间件,将Selenium命令转发给Firefox的 Marionette 框架。要...
ChromeWebdriver-win64是一个专为Windows平台设计的自动化测试工具,主要用于驱动Google Chrome浏览器进行自动化操作。在软件开发和测试领域,Selenium是一个广泛使用的Web应用程序自动化框架,而ChromeDriver则是...
WebDriver是一种开源的自动化测试框架,它允许程序员通过编程方式控制Web浏览器进行自动化操作,例如点击按钮、填写表单、导航等。在IT行业中,WebDriver被广泛应用于软件测试,特别是Web应用的端到端测试,以及数据...
本书是一本从入门到精通模式的Selenium WebDriver实战经验分享书籍。全书共分为四个部分:第1部分基础篇主要讲解自动化测试...第4部分为常见问题和姐解决办法,讲解了WebDriver使用过程中的常见疑难问题和解决办法。
**IE WebDriver for Python** 在自动化测试领域,WebDriver 是一个接口,允许编程方式与浏览器进行交互。对于使用 Internet Explorer(IE)作为主要浏览器的环境,`IE WebDriver` 是必不可少的工具。这个工具允许...
4. **元素定位**: WebDriver 提供了多种元素定位策略,如ID、Name、XPath、CSS选择器等,以便准确找到页面上的元素进行操作。这些定位策略对于编写精确的测试脚本至关重要。 5. **事件处理**: WebDriver 可以...
### 4. 页面导航 WebDriver 提供了`get`方法来加载新的URL,`back`和`forward`方法来模拟浏览器的前进和后退功能,`refresh`方法用于刷新当前页面。 ### 5. 异步处理与等待 WebDriver 提供了异步操作的支持,如`...
4. 初始化 WebDriver 实例,例如 `WebDriver driver = new ChromeDriver();` 或 `FirefoxDriver driver = new FirefoxDriver();` 5. 使用 WebDriver API 进行浏览器操作,如 `driver.get("http://www.example.com");...
Selenium-Webdriver系列教程旨在引导读者理解和掌握Selenium 2.0,即WebDriver的核心概念、常用方法和高级功能。Selenium 1.x虽然已被弃用,但由于丰富的资源和历史积累,仍然被许多人广泛使用。然而,随着Selenium ...
在Python自动化测试领域,`webdriver`是一个至关重要的工具,它提供了与各种网页浏览器进行交互的能力。这个名为"webdriver.zip"的压缩包文件很显然是为了帮助用户在Python3环境中搭建一个基于`webdriver`的自动化...