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

cha*_*ace 3 testing selenium behat mink

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

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

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

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

Rob*_*res 7

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

断言元素存在于页面上:

$this->assertSession()->elementExists('css', '.selector');
Run Code Online (Sandbox Code Playgroud)

检查内容是否为空:

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

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


Elv*_*tti 5

断言页面包含任何内容并没有在行为中实现(我认为),因为这不是一个好的做法。该页面可能会返回异常或 HTTP 错误 403/500,并且您的测试将通过。

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