如何编写捕获屏幕截图或HTML页面的Behat步骤?

时间:2014-03-25 09:31:21

标签: php selenium screenshot behat goutte

理想情况下,还可以在图像查看器中自动打开屏幕截图。

2 个答案:

答案 0 :(得分:17)

修改:感谢主教提供有关打开应用的提示。但是仍不确定如何使用Windows。

/**
 * This works for Selenium and other real browsers that support screenshots.
 *
 * @Then /^show me a screenshot$/
 */
public function show_me_a_screenshot() {

    $image_data = $this->getSession()->getDriver()->getScreenshot();
    $file_and_path = '/tmp/behat_screenshot.jpg';
    file_put_contents($file_and_path, $image_data);

    if (PHP_OS === "Darwin" && PHP_SAPI === "cli") {
        exec('open -a "Preview.app" ' . $file_and_path);
    }

}

/**
 * This works for the Goutte driver and I assume other HTML-only ones.
 *
 * @Then /^show me the HTML page$/
 */
public function show_me_the_html_page_in_the_browser() {

    $html_data = $this->getSession()->getDriver()->getContent();
    $file_and_path = '/tmp/behat_page.html';
    file_put_contents($file_and_path, $html_data);

    if (PHP_OS === "Darwin" && PHP_SAPI === "cli") {
        exec('open -a "Safari.app" ' . $file_and_path);
    };
}

答案 1 :(得分:0)

您可以在https://github.com/forceedge01/behat-fail-aid处使用此软件包。这将为您提供有关失败的屏幕截图以及更多内容。它将所有详细信息注入到现有的异常消息中,因此可以像通常的behat失败消息一样将其完美地放置在失败下面。最重要的是,您无需编写和维护任何代码,而且它可以与javascript和非javascript驱动程序一起使用!输出结果如下:

enter image description here

您所要做的就是通过composer安装软件包

  

$作曲家需要创世纪/ behat-fail-aid --dev

并将上下文添加到您的behat.yml文件中

  

behat.yml

default:
  suites:
    default:
      contexts:
        - FailAid\Context\FailureContext
  extensions:
    FailAid\Extension: ~

您还可以使用此软件包执行其他操作,但这可以解决您的问题,测试愉快!