Web测试录制:录制时自动插入断言?

Web test recording: automatically insert assertions during recording?

我需要尽可能自动化地记录 Web 测试场景。 Selenium IDE 或更好的 Chrome Katalon 插件似乎对此非常有效。然而,录音中缺少的是断言。到目前为止,除了录制完成后 "add them by hand" 之外,我没有找到真正的替代方法。

现在我知道我的页面的哪些部分包含相关的输出文本,即要接受测试。例如基于 ID 模式、class 名称、标签层次结构等。

所以鉴于我的网络应用程序在 "known good state" 中,理论上我可以在录制期间获取相关标签的文本内容,然后将我的断言插入到录制的场景中。我的目标是将其自动化。

有没有办法在 Katalon 插件、Selenium IDE 或任何其他自动网络记录工具中执行此操作?我读过 Katalon Extension Scripts 但据我了解,这些不能做我想做的事?

-- 编辑 -- 尝试重新措辞并更加具体 --

在我的记录过程中,在某些事件中(例如页面加载时),我希望该工具找到与某些选择器匹配的所有元素,并为每个匹配项存储一个声明实际当前值的场景中的断言(例如 div.innerText 或 input.value) 页面上的元素。我想定义应该触发插入断言的事件和选择器以及定义断言值的表达式。

例子

假设我的网络应用有一个搜索页面。我在输入字段中输入数据,然后点击 "search" 按钮。大多数工具(如 Katalon Recorder)都会记录这些操作。现在在下一页上,将显示搜索结果。每个搜索结果将在 div class="result" 中。假设在录制时我得到了两个搜索结果 "foo" 和 "bar"。所以我希望该工具在场景中存储,同时记录第一个结果应该是 "foo" 第二个应该是 "bar" 的断言,根据我的规则,所有 $("div.result") 应该在页面加载时声明它们的 "innerText"。

避免使用 Selenium IDE,因为自 Firefox 版本 55 起已停止与 Firefox 的兼容性,因此您将无法 运行 在最新版本的 Firefox 上进行测试。

在浏览器中执行操作时,记录这些操作以重新运行它们是相对容易的。 100% 清楚您刚刚按下的是什么按钮。 你可能可以在一个页面上做一百万个不同的断言,任何工具都很难猜测你想要断言哪些东西然后自动添加这些断言所以如果你能找到一个工具可以做的事情我会很惊讶你要。

是什么阻止您从头开始用代码编写自己的自动化测试?根据我的经验,编写自己的测试并没有那么慢,但是一旦您习惯了这样做,您将能够更轻松地解决更复杂的问题。

我没有使用 Katalon 的经验。

你不能在录制时添加断言,但你也可以在录制后使用Selenese。 在此处查看官方参考资料:https://docs.katalon.com/display/KD/Selenese+%28Selenium+IDE%29+Commands+Reference

对于它的价值,我设法得到了我需要的东西如下:

  • 在我的Chrome
  • 中找到Katalon Recorder的Extension目录
  • 将全部内容复制到 Eclipse
  • 通过添加以下内容修改来源 content/recorder.js、方法 Recorder.attach()

    var self = this;
    $(...).each(function(i, el) {
        var target = self.locatorBuilders.buildAll(el);
        if (el.tagName == "SELECT" || el.tagName == "INPUT")
            recorder.record("assertValue", target, el.value, false);
        else
            recorder.record("assertText", target, el.innerText, false);
    });
    

    (注意 ... 是定义区域的 JQuery 选择器,我知道这些区域将包含应用程序中的相关数据。这可以在此源中进行调整(例如通过添加更多选择器),或在应用程序本身中(例如,通过向 HTML 中的某些标记添加信号 class 只是为了触发断言)。

  • 在chrome中,激活"developer mode"并加载修改后的插件。
  • 在记录时,现在会在每次加载页面时自动为我的网络应用程序的相关部分(上面的...)添加断言。
  • 开心!