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开发者_C百科.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.
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
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.
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.
精彩评论