首页 > 解决方案 > 如何在 JMeter 的 Webdriver Sampler 中获取警报消息?

问题描述

我需要在使用 Webdriver Sampler 运行 JMeter 测试时记录所有警报消息(并接受警报框)。我已经尝试截屏并接受警报,但没有成功:

try{
    WDS.browser.switchTo().alert();
    WDS.browser.getScreenshotAs(JavaImporter(org.openqa.selenium).OutputType.FILE).renameTo(new java.io.File("output/screenshot.png"));
    WDS.browser.switchTo().alert().accept();
} catch(exception){
    WDS.log.info(exception);
}

采样器结果截图

标签: javascriptseleniumselenium-webdriverjmeterjmeter-plugins

解决方案


WebDriver Sampler的当前版本是3.1,它假定Selenium 支持库版本 3.14.0

从 Selenium 支持库版本 3.14.0 开始,在警报出现并处于活动状态之前,您无法截取屏幕截图(实际上可以做任何其他事情),因此这意味着您无法通过 Selenium 截取浏览器屏幕截图。

如果您确实需要带有警报的页面屏幕截图,您可以使用Robot.createScreenCapture() 函数,替代代码将类似于:

new org.openqa.selenium.support.ui.WebDriverWait(WDS.browser, 2000).until(org.openqa.selenium.support.ui.ExpectedConditions.alertIsPresent())
javax.imageio.ImageIO.write(new java.awt.Robot().createScreenCapture(new java.awt.Rectangle(java.awt.Toolkit.getDefaultToolkit().getScreenSize())), "png", new java.io.File("output/screenshot.png"));
WDS.browser.switchTo().alert().accept()

更多信息:WebDriver 采样器:您回答的 10 大问题


推荐阅读