javascript - 如何在 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);
}
解决方案
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()
推荐阅读
- java - Spring Transaction (@Transaction) with Plain JDBC without JdbcTemplate
- javascript - Javascript将额外参数传递给回调
- python - 如何在烧瓶应用程序中使用python中的变量定义
- docker - 如何使用 treafik 中的中间件从 http 重定向到 https?
- react-native - FlatList 无法水平滚动
- swift - 使用 UIViewControllerRepresentable 更新值时弹出窗口崩溃
- apache-spark - Does Spark support load balancing in heterogeneous clusters?
- django - 如何将字段添加到查询集并在循环中填充它?
- assembly - 在 MASM64 中是否有将 16 位立即数压入堆栈的指令?
- assembly - 在 6502 汇编器中编写子程序的最佳方法?