Katalon 和 Chrome 无头模式的屏幕截图

2023-12-03

我使用以下代码来截取 Katalon Studio 脚本中警告和错误消息的屏幕截图:

import ru.yandex.qatools.ashot.AShot
import ru.yandex.qatools.ashot.Screenshot
import ru.yandex.qatools.ashot.coordinates.*
import ru.yandex.qatools.ashot.cropper.*

public class ScreenshotHelper {


  public void takeWebElementScreenshot(TestObject object) {
    WebElement element = WebUiCommonHelper.findWebElement(object, 20)
    WebDriver driver = DriverFactory.getWebDriver();
    String fileName = new SimpleDateFormat("yyyyMMddHHmmSSS").format(new Date())
    Screenshot screenshot = new AShot().takeScreenshot(driver, element)
    ImageIO.write(screenshot.getImage(),'PNG', new File(System.getProperty("user.dir")+"/ErrorScreenshots/ElementScreenshot"+"_"+fileName+".png"))
  }
}

该方法是从同一类的另一个方法调用的:

public void catchNotyMessage(){

TestObject noty_warning = WebUI.modifyObjectProperty(findTestObject("DUMMY"), 'css', 'equals', 'div.noty_type_warning', true)
TestObject noty_error = WebUI.modifyObjectProperty(findTestObject("DUMMY"), 'css', 'equals', 'div.noty_type_error', true)

    if (WebUI.verifyElementPresent(noty_error, 1, FailureHandling.OPTIONAL)){
        this.takeWebElementScreenshot(noty_error)
    }
    else if (WebUI.verifyElementPresent(noty_warning, 1, FailureHandling.OPTIONAL)){
        this.takeWebElementScreenshot(noty_warning)
    }
}

它工作正常,在正常模式下使用 Katalon 时截取屏幕截图。

但是,当我在无头模式下运行脚本时,我收到以下警告:

WARNING com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/DUMMY' located by 'By.cssSelector: div.noty_type_error' not found

即使该元素应该存在。测试失败了java.lang.NullPointerException.

是因为无头执行吗?我该如何解决这个问题?


您必须为 headless chrome 设置参数:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Katalon 和 Chrome 无头模式的屏幕截图 的相关文章

  • Groovy 中 Null Object 类的用途是什么?

    我已经使用 Groovy 五个小时了 刚刚发现Groovy NullObject http groovy codehaus org api index html org codehaus groovy runtime NullObject
  • 从 Groovy 中的列表中删除空项目

    从 Groovy 列表中删除空项目的最佳方法是什么 ex null 30 null 想要返回 30 只需使用减号 null 30 null null
  • GPars 报告大量异步函数的状态并等待完成

    我有一个解析器 在收集一行数据后 我想触发一个 aync 函数并让它处理该行 同时主线程继续运行并获取下一行 我看过这个帖子 在 Groovy 中如何同时执行两个任务并等待结果 https stackoverflow com questio
  • Groovy 有“use strict”吗?

    我记得从我的 Perl 时代起 使用严格 http perldoc perl org strict html 导致运行时执行额外验证的语句 Groovy 是否有等效的语句 我不喜欢在运行时被编译时检测到的东西所困扰 比如向构造函数传递的参数
  • 您可以使用 Jenkins Pipeline 解析 TAP 格式吗?

    我正在尝试解析 BATS 脚本的输出 https github com gaia adm docker bench test https github com gaia adm docker bench test 输出为 TAP 格式 我稍
  • groovy 无法解析 kotlin 类

    由于我无法解决我遇到的问题kotlin 我决定回到groovy为了实现该插件 但是我遇到了这个问题 我有这样的项目结构 为了不重写所有类 我决定重用中实现的类kotlin 然而我的课FileProcessingCoreGroovy Down
  • 启用 Chrome Headless 时 Dusk 测试失败

    我有一个 HTML 元素 该元素应该仅在第一页加载时显示 Javascript 设置 cookie 如果设置了 cookie 则不会显示该元素 PHP 检查 cookie 如果 cookie 存在 则不会呈现内容 我正在尝试为此进行 lar
  • 如何在 groovy 中将输出重定向到 stderr?

    我正在寻找一种将 groovy 脚本中的输出重定向到 stderr 的方法 catch Exception e println Want this to go to stderr 就在我的脑海中 你不能做一些自我接线吗 def printE
  • 使用 Puppeteer 和 Headless Chrome 获取 DOM 节点文本

    我正在尝试使用无头 Chrome 和 Puppeteer 来运行我们的 Javascript 测试 但我无法从页面中提取结果 基于这个答案 https stackoverflow com a 45799744 4794 看起来我应该使用pa
  • Spark/Gradle -- 在 build.gradle 中获取 IP 地址以用于启动 master 和worker

    我在基本层面上了解 build gradle 构建脚本的各个移动部分 但无法将它们全部结合在一起 在 Apache Spark 独立模式下 只需尝试从 build gradle 在同一个机器上启动 master 和worker 稍后将使用
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • Jenkins 共享库:“java.lang.NoSuchMethodError:没有这样的 DSL 方法”

    我正在尝试通过 Jenkinsfile 和共享库创建 Jenkins 管道 我通过 Web UI 创建了一个作业来获取 Jenkinsfile 它工作正常 但是 共享库内容似乎无法被 Jenkins 识别 下面是 Jenkinsfile 和
  • 在ScreenUpdates之后调用drawViewHierarchyInRect时iOS8缩放故障:YES

    我正在将一个项目从 iOS7 转换为 iOS8 该项目使用自定义转换 并且需要在加载完成后捕获模式afterScreenUpdates YES并看到整个屏幕放大一秒钟然后缩小 我还在 iOS 版 Flickr 应用程序的各个部分之间以及在
  • 执行Jenkinsfile时如何获取管道配置字段“脚本路径”?

    如何从 Jenkinsfile groovy 获取 Jenkins 中管道配置字段 脚本路径 的内容 在此示例中 我想在执行 Jenkinsfile 本身时获取字符串 Apps mq logger Jenkinsfile 您可以通过这种方式
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • iTunes Lookup API,获取iPhone 5应用程序截图

    I use iTunes API 查找通过 App ID 获取应用数据 即使应用程序是为iPhone5 在 JSON 中我得到3 5 inch屏幕截图 下截图网址 array 有什么办法可以得到4 inch 截图 可以使用非官方的 iTun
  • Groovy HttpBuilder - 获取失败响应的正文

    我正在尝试使用 Groovy HTTPBuilder 编写一个集成测试 该测试将验证正文中是否返回正确的错误消息以及 HTTP 409 状态消息 但是 我无法弄清楚如何在失败情况下实际访问 HTTP 响应的正文 http request E
  • 使用动态对象组配置 gradle 插件扩展的正确方法

    我正在尝试编写自己的 gradle 插件 它需要能够配置一组对象 这些对象的数量以及它们的名称取决于用户 用于创建具有高级可定制性的自定义 gradle 插件的 doco 相当差 它提到project container 方法来做这种事情
  • 截取 DirectX 全屏应用程序的屏幕截图

    这让我很困惑 DirectX 绕过一切并直接与设备驱动程序对话 因此 GDI 和其他常用方法将不起作用 除非 Aero 被禁用 或不可用 否则出现的只是屏幕左上角的黑色矩形 我已经尝试过其他人在几个论坛上建议的方法 使用 DirectX 获
  • Grails GORM 和枚举

    我在 Grails 中使用枚举时遇到问题 我尝试在 grails 域对象中使用枚举 code package it xxx tools kanban import java util Date class Task String name

随机推荐

  • Ruby 方法拦截

    我想拦截 ruby 类上的方法调用 并能够在方法实际执行之前和之后执行某些操作 我尝试了以下代码 但出现错误 MethodInterception rb 16 inbefore filter eval 2 inalias method 未定
  • dbml 文件 - 创建数据库

    我正在尝试使用创建数据库BA dbml文件 Linq 到 Sql 我知道我必须创造DataContext并创建数据库 但我不知道该怎么做 我必须创建吗DataContext in the BA cs file 这可能是多余的帖子 对此我深表
  • 如何更改 iphone sdk xcode 中的 uiimage 颜色

    我正在使用不同的图像 我想包括更改颜色选项 但我不能 有身体帮助我吗 如果你想做图像着色 请参见 UIImage Tint m 中kballard MGImageUtilities 如果您想要批量颜色替换 例如 将图像视为剪影并将整个颜色更
  • 如何比较从 url 到 NSutf8stringencoding 的字符串返回 1 或 0 与普通字符串 @"1"

    我需要使用比较 url 中的字符串NSutf8stringencoding以便返回 1 或 0 但即使字符串值为 1 它也始终返回 0 NSString strURL NSString stringWithFormat http local
  • 使用自定义表情符号创建软键盘

    我的任务是创建一个新的 android3rd party keyboard支持来自资产的自定义表情符号 我自己的图标 我想用我自己的表情符号图标实现一个软键盘不使用 Unicode 或我的自定义 Unicode 问题 如果我创建一个自定义表
  • PHPUnit + Selenium:如何设置 Firefox about:config 选项?

    使用 PHPUnit 和 Firefox 远程运行 Selenium 测试时 onChange 事件不会像用户操作浏览器时那样被触发 解决这个问题的方法似乎是设置focusmanager testmode选项true在 Firefox 的偏
  • 回发期间 GridView.DataSource 为空

    我想从我的应用程序中的每个 Gridview 实现打印 下载 csv 那些通过数据源或直接通过 gvSample DataSource Data gvSample DataBind 现在我的第一个方法是在页脚模板中设置一个下载按钮并在那里处
  • 从 .m matlab 文件中声明的矩阵创建 numpy 数组

    一位同事留下了一些我想用 Numpy 分析的数据文件 每个文件都是一个 matlab 文件 例如data m 并具有以下格式 但有更多的列和行 values 24 92 23 66 22 55 24 77 23 56 22 45 24 54
  • 查找并替换数组中的特定哈希及其值

    在数组中查找特定哈希并就地替换其值的最有效方法是什么 以便数组也发生更改 到目前为止 我已经得到了这段代码 但在具有大量数据的实际应用程序中 这成为应用程序中最慢的部分 这可能会泄漏内存 因为当我对每个 websocket 消息执行此操作时
  • 实体框架对同一个表的多次引用

    我在使用 EF 代码优先创建数据库时遇到问题 我有一个实体播放器和一个实体炸船 每个友谊都涉及两个玩家 其中一名玩家是友谊的发送者 另一位是友谊的接收者 这是我的实体 播放器 cs public class Player public in
  • 如何避免 STRING_AGG 函数中的重复

    我的查询如下 select u Id STRING AGG sf Naziv as Ustrojstvena jedinica ISNULL CONVERT varchar 200 STRING AGG TRIM p Naziv 121 a
  • 如何从 groovy/grails 查询 mongodb?

    我是否必须有一个域对象才能查询mongodb 如果我只想显示一些原始数据怎么办 查询的语法是什么mongodb从我的控制器 I tried def var db nameOfMyCollection find 但它说我的控制器类中没有 db
  • 优化 .NET 中 System.Drawing 的 PNG 输出 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有一个例程 它读取图像
  • BeautifulSoup 返回与查看源代码不同的 html

    我是使用 BeautifulSoup 的新手 所以如果我的问题很愚蠢 请原谅我 然而 自早上 6 点以来 我一直在谷歌上搜索并尝试在每个 stackoverflow 线程中尝试建议 但无济于事 我的问题是我有一个带有基因名称的 csv 文件
  • perl:执行多个系统进程并等待它们完成

    目前 在我的 Perl 脚本中 我进行如下调用 system long program1 long program2 long program3 wait 我希望能够记录每个长时间运行的命令执行的时间 同时仍然异步执行它们 我知道系统调用会
  • Python Altair 生成选择表

    我有一个包含一堆分箱数据的直方图 我想知道如果我从直方图中选择一个条形 是否可以生成一个表格 并且它会显示原始数据框中的数据 您可以使用以下命令创建表格的外观mark text 这是基于文档中此页面的示例 import altair as
  • 在 Spring 5 中与子级共享父级 Spring 上下文

    如何在 Spring 5 中与孩子共享父上下文 使用 spring 4 我们可以通过locatorFactorySelector as context param
  • 使用 jQuery 调用远程 ASMX 的问题

    我一直在尽力正确理解这一点 XML SOAP 和 JSON 响应之间有什么区别 人们如何知道如何调用其响应为上述之一的 Web 服务 如果我偏离了轨道 请纠正我 我问这个问题的原因是因为我试图在我的 NET3 5 web应用程序中从jQue
  • Codeigniter - Active Records 是否容易受到 SQL 注入攻击?

    刚刚读过this堆栈溢出 因此让我想知道是否可以通过 CI 中的活动记录进行 SQL 注入 在我的项目中的大多数地方 对于用户注册和用户配置文件更新 我都完成了如下 SQL 插入 控制器 name this gt input gt post
  • Katalon 和 Chrome 无头模式的屏幕截图

    我使用以下代码来截取 Katalon Studio 脚本中警告和错误消息的屏幕截图 import ru yandex qatools ashot AShot import ru yandex qatools ashot Screenshot