我有一个针对远程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超时都设置为)。
答案 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秒内未加载。在这种情况下,如果您还想检查页面加载时间,那么可以使用异常处理和时间计算来查找页面加载时间。