Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 检查元素是否包含内容的Behat/Mink测试_Testing_Selenium_Behat_Mink - Fatal编程技术网

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

Testing 检查元素是否包含内容的Behat/Mink测试,testing,selenium,behat,mink,Testing,Selenium,Behat,Mink,我正在学习编写这些测试,以帮助提高我编写的代码的总体质量,但是我找不到任何检查元素是否包含任何内容的测试示例—有大量的测试用于检查确切的短语 在我的例子中,这是一个CMS驱动的应用程序,因此如果用户更改了内容,测试将失败,因此,检查页面中是否有内容似乎更合理,考虑到内容 我已经找到了一种使用selenium和jQuery的方法,但是以这种方式运行测试要慢得多,所以我尽量只使用命令行 以前有人有过这种经历吗?我的应用程序是用PHP编写的,我在一些自定义测试操作方面有点运气,但我绝不是一个高级程序员

我正在学习编写这些测试,以帮助提高我编写的代码的总体质量,但是我找不到任何检查元素是否包含任何内容的测试示例—有大量的测试用于检查确切的短语

在我的例子中,这是一个CMS驱动的应用程序,因此如果用户更改了内容,测试将失败,因此,检查页面中是否有内容似乎更合理,考虑到内容

我已经找到了一种使用selenium和jQuery的方法,但是以这种方式运行测试要慢得多,所以我尽量只使用命令行


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

如果您使用的是Behat+Mink,您可以使用一些内置的帮助函数来实现这一点:

断言页面上存在元素:

$this->assertSession()->elementExists('css', '.selector');
检查内容是否不为空:

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

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

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

  • 如果您只想断言页面已加载OK,请检查页面返回代码200
  • 如果要断言页面包含某些内容,请依赖版面中始终存在的元素,例如页脚(至少检查没有任何内容停止渲染)、页面标题h1,甚至“body”元素(如果它包含错误消息,仍然不是一个好主意)

有什么东西吗?包括空字符串?我想,任何超过0个字符的。所以“不是空的”是我想要的。谢谢。谢谢猫王-但是在我的页面上总是有一个内容分区,我只需要知道里面是否有任何内容。-所以响应状态是模糊的,元素很可能在那里,有没有内容,我只想确保有“一些”内容,所以我知道传递这些内容的函数没有被破坏!!:)ups,你写了“如果一个元素包含任何内容”,我理解“如果一个页面包含任何内容”,这听起来像是答案,它当然有道理我马上就去试试。谢谢罗布!!:)我需要将代码更改为:
if(empty($this->getSession()->getPage()->find('css','.selector')->getText()){
Then the response status code should be
Then I should see a ".footer" element
Then I should see a "body" element