Web测试记录:在录制过程中自动插入断言?

时间:2018-05-10 11:27:20

标签: automated-tests integration-testing selenium-ide web-testing katalon-studio

我需要尽可能自动地记录Web测试场景。 Selenium IDE或更好的Chrome版Katalon插件似乎非常有效。然而,录音中缺少的是断言。到目前为止,我发现没有真正的替代方案,而不是在录制结束后“手动添加它们”。

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

因此,鉴于我的网络应用程序处于“已知良好状态”,理论上我可以在录制过程中获取相关标签的文本内容,然后在录制的场景中插入我的断言。我的目标是实现自动化。

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

- 编辑 - 尝试改写并更具体 -

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

例如

假设我的webapp有一个搜索页面。我在输入字段中输入数据,然后点击“搜索”按钮。这些动作由Katalon Recorder等大多数工具记录。现在在下一页上,将显示搜索结果。每个搜索结果都在div class =“result”中。假设在录制时我有两个搜索结果“foo”和“bar”。所以我希望工具存储在场景中,同时记录一个断言,第一个结果应该是“foo”,第二个应该是“bar”,基于我的规则,所有$(“div.result”)应该有他们的“innerText”在页面加载时断言。

4 个答案:

答案 0 :(得分:1)

间接地,您可以通过在录制期间单击有趣的元素来自动添加断言(=非链接但包含您要检查的部分的元素)。然后,在录制之后,你要么保持这样(点击不会受到伤害)或将命令改为e。 G。 assertElementPresentassertText(并输入要检查的文字)。

正如其他人所提到的,这些工具不会知道您要检查的网页的哪些部分。

  

我希望一些“业务用户”在录制时使用该应用程序,并自动声明相关部分。

在这种情况下,visual solution是否更适合?这样,您的用户就可以制作他们想要声明的部分的(小)屏幕截图。该应用会在重播期间搜索屏幕截图。

答案 1 :(得分:0)

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

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

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

我对Katalon没有经验。

答案 2 :(得分:0)

您无法在录制时间中添加断言,但录制后也可以使用Selenese。 在这里查看官方参考:https://docs.katalon.com/display/KD/Selenese+%28Selenium+IDE%29+Commands+Reference

答案 3 :(得分:0)

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

  • 在我的Chrome中找到Katalon Recorder的扩展程序目录
  • 将整个内容复制到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中的某些标签添加信令类来触发断言)。

  • 在Chrome中
  • ,激活“开发者模式”并加载修改后的插件。
  • 录制时,现在会自动为我的网页应用中的相关部分(上面的...)添加断言,每次加载页面。
  • 快乐!