Behat / Mink测试以检查元素是否包含内容

时间:2014-12-08 12:04:06

标签: testing selenium behat mink

我正在学习编写这些测试以帮助提高我编写的代码的整体质量,但是我一直无法找到任何检查元素是否包含的测试示例任何事情 - 有很多测试可以检查确切的短语。

在我的情况下,它是CMS驱动的应用程序,因此如果用户更改内容,测试将失败,因此检查以确保页面中有一些内容似乎更合理,问候的内容。

我已经找到了处理这个selenium和jQuery的方法,但是以这种方式运行测试要慢得多,所以我尽可能地尝试保持命令行。

以前有人有这种经历吗?我的应用程序是用PHP编写的,我对一些自定义测试操作有点运气,但我绝不是一个高级编码器。

2 个答案:

答案 0 :(得分:6)

如果你正在使用Behat + Mink,你可以使用一些内置的帮助函数来实现这个目的:

断言元素存在于页面上:

$this->assertSession()->elementExists('css', '.selector');

检查内容是否为空:

if ( empty($this->getPage()->find('css', '.selector')->getText()) ) {
    throw new Exception;
}

我发现WebAssert类是一个特别有用的对象+最好的文档是类本身:WebAssert.php

答案 1 :(得分:2)

声明页面包含任何内容未在behat(我认为)中实现,因为它不是一个好习惯。 该页面可能返回异常,或者HTTP错误403/500,您的测试将通过。

  • 如果您只想断言加载的页面确定,请检查页面返回码200
Then the response status code should be
  • 如果您想断言页面包含某些内容,请依赖布局中始终存在的元素,例如:页脚(至少检查没有任何内容停止渲染),页面标题h1,甚至是" body"元素(如果它包含错误消息仍然不是一个好主意)
Then I should see a ".footer" element
Then I should see a "body" element