Reputation: 804
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
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
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
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