Selenium RC忽略了我的超时

时间:2011-03-22 12:42:52

标签: selenium automated-tests

我有一个针对远程Selenium Server实例运行的简单Selenium测试。

我正在尝试测试页面性能,有些页面可能会超过最大执行时间,而我正试图抓住它。

无论我在setTimeout()中放置什么,它总是等待整页加载或服务器超时。

public static $browsers = array(
    array(
        'name' => 'Firefox on Ubuntu',
        'browser' => '*firefox',
        'host' => 'dev-ubuntudesktop',
        'port' => 4444,
        'timeout' => '1000',
    ),
)

public function testSlowPage() {
    $this->setTimeout(1000);
    $this->open('myslowaddress');
    $this->assertTextNotPresent('Internal Server Error');
}

即使我使用openAndWait,上面的示例也没有到达断言行,直到加载页面或Web服务器终止请求为止。

我真正喜欢的是一个确认“页面加载时间不到1秒”的测试,无需等待30秒(或者任何PHP超时都设置为)。

1 个答案:

答案 0 :(得分:0)

Open方法隐式调用wait,无论你是否想要它。此等待默认为30秒。当您的页面在30秒内未加载时,将使用setTimeOut。因此,如果您的页面在30秒内未加载,那么您可以使用setTimeOut,否则您的测试将失败,因此它将是 -

selenium.Open(appURL); selenium.setTimeOt(超时);

现在进入你的测试目标。您可以断言检查页面加载的时间长度,我在这里检查了1秒 -

(它在java中,但你应该能够找到PHP等价物)

int testStartTime = Calendar.getInstance().get(13);
selenium.open(appURL);      
int testEndTime = Calendar.getInstance().get(13);
Assert.assertTrue((testEndTime-testStartTime)>1, "Fail");

请注意,我没有在这里使用setTimeOut方法,因此如果页面未在30秒内加载,则测试将以任何方式失败,并且您将知道该页面在30秒内未加载。在这种情况下,如果您还想检查页面加载时间,那么可以使用异常处理和时间计算来查找页面加载时间。