为什么Selenium RC无法在虚拟机上看到网站

时间:2010-12-21 04:22:42

标签: php testing selenium phpunit selenium-rc

我无法让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 服务器1.0.3,以及来自pear的最新phpunit。

3 个答案:

答案 0 :(得分:1)

从下面的行中删除一个http

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

并尝试......让我知道它是否有效

答案 1 :(得分:0)

尝试从

中删除尾部斜杠
$this->setBrowserUrl("http://10.48.77.48/")

所以它看起来像:

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

在设置浏览器网址时,我有时会遇到跟踪斜杠的问题。

如果这不起作用,我的另一个想法是Selenium在开始测试之前ping服务器以查看它是否已启动。它有问题,因为它试图ping http://10.48.77.48/并且它不起作用。确保您能够从您的计算机上ping它。

答案 2 :(得分:0)

解决。我的应用程序没有正确响应HEAD请求。要测试您的应用程序,请运行以下命令:

curl --head http://10.48.77.48/

如果它返回404,您的应用程序可能无法正确处理HEAD个请求。