Почему Selenium RC не видит сайт на виртуальной машине? - PullRequest
1 голос
/ 21 декабря 2010

У меня проблемы с тем, чтобы Selenium мог просматривать сайты, размещенные на виртуальной машине.Следующий тест вызывает ошибку, и я понятия не имею, почему:

<?php

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class ActualTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://10.48.77.48/"); // IP of virtual machine
        $this->setHost('192.168.101.1'); // IP of my Mac
    }

    public function testGetHomePage()
    {
        $this->open("/", true);
    }
}

Возвращает следующее сообщение об ошибке, указывающее, что не удалось найти виртуальную машину:

$ phpunit ActualTest.php
PHPUnit 3.5.6 by Sebastian Bergmann.

E

Time: 7 seconds, Memory: 6.75Mb

There was 1 error:

1) ActualTest::testGetHomePage
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().
XHR ERROR: URL = http://10.48.77.48/ Response_Code = 404 Error_Message = Page Not Found.


/home/craiga/ombudsman/app/systemtests/ActualTest.php:16

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

Я могу получить доступ к этому сайту из любого браузера в любом месте сети без каких-либо проблем, но по какой-то причине браузер, запущенный Selenium, не может.Эта ошибка возникает независимо от того, запускаю ли я тест с виртуальной машины или Mac.

У меня может быть следующий тест для подключения к Google без проблем:

<?php

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class VanitySearchTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://www.google.com.au/");
        $this->setHost('192.168.101.1'); // IP of my Mac
    }

    public function testSearchForSelf()
    {
        $this->open("/");
        $this->type("q", "craig anderson");
        $this->click("btnG");
        $this->waitForPageToLoad("30000");
        try {
                $this->assertTrue($this->isTextPresent("craiga.id.au"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
                array_push($this->verificationErrors, $e->toString());
        }
    }
}

Этот тест, который подключаетна страницу моего Mac по умолчанию, также проходит без проблем:

<?php

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class MacTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://192.168.101.1/");
        $this->setHost('192.168.101.1'); // IP of my Mac
    }

    public function testMacHomePage()
    {
        $this->open("/");
        try {
                $this->assertTrue($this->isTextPresent("It works!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
                array_push($this->verificationErrors, $e->toString());
        }
    }
}

Кто-нибудь знает, почему это может происходить?Я рад предоставить любую информацию о моей настройке.Я использую Selenium Server 1.0.3 и последнюю версию phpunit от pear.

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Удалить один http из строки ниже

$this->setBrowserUrl("http://http://10.48.77.48/"); // IP of virtual machine

и попробуйте ... Дайте мне знать, если это работает

0 голосов
/ 23 декабря 2010

решаемая. Мое приложение не отвечало правильно на HEAD запросы. Чтобы проверить ваше приложение, запустите следующее:

curl --head http://10.48.77.48/

Если он возвращает 404, ваше приложение, вероятно, не обрабатывает HEAD запросов должным образом.

0 голосов
/ 22 декабря 2010

Попробуйте удалить косую черту из

$this->setBrowserUrl("http://10.48.77.48/")

Так это будет выглядеть так:

$this->setBrowserUrl("http://10.48.77.48")

У меня иногда возникают проблемы с конечными слешами при настройке URL браузера.

Если это не сработает, у меня есть другая идея, что Selenium отправляет эхо-запрос на сервер перед запуском теста, чтобы проверить, работает ли он. У него проблемы, потому что он пытается пинговать http://10.48.77.48/, и он не работает. Убедитесь, что вы можете пропинговать это с вашей машины.

...