硒RC / PHPUnit测试总是超时?

我对测试非常陌生,所以对我来说很简单。 我有Seleneium与Pear,PHPUnit和Sauce Labs类SauceOnDemandTestCase.php一起工作。 我可以运行测试,并做了一个简单的就好了。 但是现在我正在做更复杂的测试并且不断收到超时消息。 我查看了StackO上的错误,其他人也在使用IE。 现在我的测试使用Firefox,所以我不知道为什么会这样。 另一篇文章在这里:

PHPUnit_Framework_Exception:当我使用Hudson运行时,无法连接到Selenium RC服务器

我尝试将等待函数更改为waitForElement或waitForVisible,但无济于事,它仍然失败并出现一个错误。 这是我的XML日志文件输出,如果这对你有用:

<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
  <testsuite name="ExampleTest" file="C:websitessaucelabsExampleTest.php" tests="1" assertions="0" failures="0" errors="1" time="44.717224">
    <testsuite name="ExampleTest: Testing Selenium 1 in PHP at Sauce (FF 7)" tests="1" assertions="0" failures="0" errors="1" time="44.717224">
      <testcase name="test_example" class="ExampleTest" file="C:websitessaucelabsExampleTest.php" line="23" assertions="0" time="44.717224">
        <error type="PHPUnit_Framework_Exception">ExampleTest::test_example with browser firefox 7 Windows 2003
PHPUnit_Framework_Exception: 
Response from Selenium RC server for open(/Home).
Timed out after 30000ms.

Current Browser URL: http://www.vehicleportal.co.uk/Home
Sauce Labs Job: https://saucelabs.com/jobs/8b202faaa055e213233637610fcd4448


</error>
      </testcase>
    </testsuite>
  </testsuite>
</testsuites>

我的脚本类看起来像这样:

<?php

date_default_timezone_set('Europe/London');

require_once 'PHPUnit/Extensions/SeleniumTestCase/SauceOnDemandTestCase.php';
require_once 'Log.php';

class ExampleTest extends PHPUnit_Extensions_SeleniumTestCase_SauceOnDemandTestCase {
    public static $browsers = array(
          array(
            'name' => 'Testing Selenium 1 in PHP at Sauce (FF 7)',
            'browser' => 'firefox',
            'os' => 'Windows 2003',
            'browserVersion' => '7',
          )
    );

    function setUp() {
        $this->setBrowserUrl('http://www.vehicleportal.co.uk');

    }

    function test_example() {
        //$this->open('/');
        //$this->assertTitle('Cross browser testing with Selenium - Sauce Labs');

        //$file = Log::factory('file', 'out.log', 'TEST');
        //$file->log("info");

        $this->open("/Home");
        $this->click("hlLogin1");
        $this->waitForVisible('h1');
        $this->type("txtLoginEmailAddress", "user@volkswagen.co.uk");
        $this->type("txtLoginPassword", "password");
        $this->click("btnLogin");
        $this->waitForVisible('h1');
        $this->verifyText("id=hlVehicleLookup", "Vehicle Lookup");
        $this->click("css=img[alt=Home]");
        $this->waitForVisible('h1');
        $this->click("link=Logout");
        $this->waitForVisible('h1');
    }
}

为了给出一些背景,我必须在Selenium IDE或SauceLabs构建器中创建我的脚本,然后将其转换,以便从Selenium IDE中获取步骤。

我有第二个小问题,我希望更好地理解。 我不断收到:

“注意:未定义的索引:HOME中的第149行的c: php PEAR PHPUnit Extensions SeleniumTestCase SauceOnDemandTestCase.php”

第149行:$ yml_path = realpath($ _ SERVER ['HOME'])。 '/.sauce/ondemand.yml';

SauceLabs类:https://github.com/saucelabs/phpunit-selenium-sauceondemand/blob/master/PHPUnit/Extensions/SeleniumTestCase/SauceOnDemandTestCase.php

我可以删除对此的引用,但它为什么在那里? 毕竟$ _SERVER ['home']不是$ _SERVER数组的PHP。

UPDATE

我们有一个理论,超时是由SL没有使用真正的浏览器造成的。 我完全删除了所有验证步骤,但仍然发生超时。


Firefox窗口是否打开过? 例如,如果你用IE配置它,你会得到同样的错误吗?

因为这可能与Selenium配置为使用Firefox 3.6版本(距离今天的7.0.1很远)相关,所以你可以改变它。 这里有一个指导,可以帮助你改变这一点。

还有一件事,尝试在setUp()函数中添加以下行:

$this->setBrowser("*firefox");

希望这可以帮助! 保持我的发布。


我认为这是由于尝试运行超时太小的测试造成的。 我增加了超时时间,这很好。

除了一个浏览器,所有浏览器都可以。 报告的错误是:

“Selenium RC server for waitForPageToLoad(30000)的响应。30000ms后超时”

我看不出增加超时时间的问题,因为它在使用相同浏览器版本的Selenium Server上工作,因此它必须与Sauce有关。 最后,我确实尝试将时间限制增加到90秒(90000)毫秒,完成了这项工作。 我有一个理论,由于在使用Sauce时延长了测试时间,这必须导致脚本在这个浏览器上超时。 无论如何,解决方案是增加错误消息建议的超时。

我在这里写下了它:

TestIgniter博客文章

链接地址: http://www.djcxy.com/p/50749.html

上一篇: Selenium RC / PHPUnit test always times out?

下一篇: Bamboo Vs. Hudson(a.k.a. Jenkins) vs Any other CI systems