PHPUnit Selenium captureScreenshotOnFailure не работает? - PullRequest
4 голосов
/ 17 мая 2010

Я использую 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, так как я запускаю сервер selenium RC в Windows.

Однако, когда я запускаю тест, он просто выдаст мне следующее:

[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");

Любые идеи или предложения приветствуются.

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 мая 2010

вы можете попробовать добавить эти строки кодов


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

2 голосов
/ 25 мая 2010

Обработка ошибок этого довольно слабая со стороны phpunit; если все не идеально, он без предупреждения проигнорирует другие ваши варианты.

Как уже упоминал Дейв, если какая-либо из переменных написана с ошибками, она не будет работать тихо, и вы также можете попробовать назначить их экземпляру в вашем setUp.

Кроме того, не каждое условие вызывает скриншот. Попробуйте $ selenium-> assertTextPresent ("foobarbaz") вместо $ selenium-> fail () для проверки работоспособности.

0 голосов
/ 30 сентября 2013

У меня недавно была эта ошибка, потому что я следовал учебнику.

Первый пример в документации относится к PHPUnit_Extensions_Selenium2TestCase. Все остальные на странице предназначены для PHPUnit_Extensions_SeleniumTestCase.

Возможно, изменить

extends PHPUnit_Extensions_Selenium2TestCase

до

extends PHPUnit_Extensions_SeleniumTestCase
...