Craig Anderson
Craig Anderson

Reputation: 804

Why can't Selenium RC see a site on virtual machine

I'm having trouble getting Selenium to see sites hosted on a virtual machine. The following test causes an error, and I have no idea why:

<?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);
    }
}

It returns the following error message, indicating that it couldn't find the virtual machine:

$ 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.

I can access this site any browser anywhere on the network without any problem, but for some reason the browser launched by Selenium can't. This error occurs whether I launch the test from the virtual machine or the Mac.

I can get the following test to connect to Google without any problem:

<?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());
        }
    }
}

This test, which connects to my Mac's default page, also passes without any problems:

<?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());
        }
    }
}

Does anyone have any idea why this might be happening? I'm happy to provide whatever information I can about my setup. I'm using Selenium Server 1.0.3, and the latest phpunit from pear.

Upvotes: 1

Views: 617

Answers (3)

Craig Anderson
Craig Anderson

Reputation: 804

Solved. My application wasn't responding correctly to HEAD requests. To test your application, run the following:

curl --head http://10.48.77.48/

If it returns a 404, your application probably isn't handling HEAD requests properly.

Upvotes: 0

Brian O&#39;Neill
Brian O&#39;Neill

Reputation: 690

Try removing the trailing slash from

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

So it would look like:

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

I sometimes have issues with trailing slashes when setting up the browser url.

If that doesn't work, the other idea I have is that Selenium pings the server before it starts the test to see if it's up. It's having issues because it's trying to ping http://10.48.77.48/ and it's not working. Make sure you are able to ping that from your machine.

Upvotes: 0

farheen
farheen

Reputation: 1886

Remove one http from below line

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

and try...Let me know if it works

Upvotes: 1

Related Questions