4

我正在使用 PHPUnit 3.4.12 来驱动我的硒测试。我希望能够在测试失败时自动截取屏幕截图。这应该得到支持,如http://www.phpunit.de/manual/current/en/selenium.html#selenium.seleniumtestcase.examples.WebTest2.php

class WebTest 
{
    protected $captureScreenshotOnFailure = true;
    protected $screenshotPath = 'C:\selenium';
    protected $screnshotUrl = 'http://localhost/screenshots';

    public function testLandingPage($selenium)
    {
            $selenium->open("http://www.example.com");
            $selenium->fail("fail");
            ...
    }
}

如您所见,我正在使测试失败,理论上它应该截取屏幕截图并将其放在 C:\selenium 中,因为我在 Windows 上运行 selenium RC 服务器。

但是,当我运行测试时,它只会给我以下信息:

[root@testbox selenium]$ sh run
PHPUnit 3.4.12 by Sebastian Bergmann.

F

Time: 8 seconds, Memory: 5.50Mb

There was 1 failure:

1) WebTest::testLandingPage
fail

/home/root/selenium/WebTest.php:32

FAILURES!
Tests: 1, Assertions: 0, Failures: 1.

我在 C:\selenium 中看不到任何屏幕截图。但是,我可以使用 $selenium->captureScreenshot("C:/selenium/image.png");

欢迎任何想法或建议。

谢谢

4

3 回答 3

2

phpunit 的错误处理相当糟糕;如果一切都不完美,它会默默地忽略您的其他选项而不会发出警告。

正如 Dave 所提到的,如果任何变量拼写错误,它将默默地不起作用,您也可以尝试将它们分配给 setUp 中的实例。

此外,并非每个条件都会触发屏幕截图。尝试 $selenium->assertTextPresent("foobarbaz") 而不是 $selenium->fail() 进行健全性检查。

于 2010-05-24T20:22:57.950 回答
2

您可以尝试添加这些代码行

    尝试 {
        $this->assertTrue($this->isTextPresent("You searched for \"Brakes\" (2 matches)"));
    } 捕捉(PHPUnit_Framework_AssertionFailedError $e){
        array_push($this->verificationErrors, $e->toString());
        $this->drivers[0]->captureEntirePageScreenshot($this->screenshotPath . DIRECTORY_SEPARATOR . rawurlencode($this->getLocation()) . '.png');
    }

于 2010-05-29T02:35:26.460 回答
0

我最近遇到了这个错误,因为我正在按照教程进行操作。

文档中的第一个示例是用于PHPUnit_Extensions_Selenium2TestCase. 页面上的所有其他内容都适用于PHPUnit_Extensions_SeleniumTestCase.

也许改变

extends PHPUnit_Extensions_Selenium2TestCase

extends PHPUnit_Extensions_SeleniumTestCase
于 2013-09-30T03:50:25.300 回答