PHPUnit和WebDriver - 我应该在哪里添加implicitWait()?

时间:2014-01-03 08:20:14

标签: selenium selenium-webdriver phpunit

我读了一些文章,他们说implicitWait()在全球范围内运作。但我不确定 我应该在哪里设置它。

这是我的代码:

public  function setUp(){
    $this->setHost('10.10.60.95');
    $this->setPort(4444);
    $this->setBrowser('firefox');
    $this->setBrowserUrl('http://www.ABC.com');
    $this->prepareSession();

}

public function testTitle()
{
    $this->url('http://www.ABC.com/');
    $this->assertEquals('ABC', $this->title());
}

我应该在哪里添加implicitWait()? setUp函数或testTitle函数?

  

$这 - >超时() - > implicitWait(10000);

谢谢你!

解答:

正如@Arran所说,实际上我应该在大多数情况下将此代码放在setUp()函数中,因为它在全局范围内工作。

public  function setUp(){
    $this->setHost('10.10.60.95');
    $this->setPort(4444);
    $this->setBrowser('firefox');
    $this->setBrowserUrl('http://www.ABC.com');
    $this->prepareSession();
    $this->timeouts()->implicitWait(10000);
}

如果要为测试功能设置特殊超时,可以在其中添加此代码。

public function testTitle()
{
    $this->url('http://www.ABC.com/');
    $this->timeouts()->implicitWait(5000);
    $this->assertEquals('ABC', $this->title());
}

1 个答案:

答案 0 :(得分:0)

我认为您可以尝试两种选择。虽然不是100%肯定他们,你可以尝试一下。请根据您的需要进行更改。

1.
// wait for at most 10 seconds until the URL is 'http://example.com/account'.
// check again 500ms after the previous attempt.
$driver->wait(10, 500)->until(function ($driver) {
  return $driver->getCurrentURL() === 'http://example.com/account';
})

2.
$this->_session->timeouts()->implicit_wait(10000); // 1 sec = 1000