2017-01-12 40 views
0

我不是很熟悉javascript,不知道如何在使用phantomjs時在php腳本中處理警報。php - phantomjs alerts

這是我的代碼:

$this->clickcontrol(Constants::LINK, 'delete', false); 
$this->acceptAlert(); 

所以我應該如何改變這種處理警報在phantomjs

+2

您的代碼是PHP,但PhantomJS是使用JavaScript的無頭瀏覽器。這兩個人通常不會很好地合作。這是什麼使用? – apokryfos

+0

使用Phantomjs的基本思想是運行無頭測試。除了警報外,我沒有看到任何問題。我所有的phpunit測試用例都能在phantomjs上正常工作 – user3920295

+1

PHP和PhantomJS不能很好地協作。您在這裏提到PHPUnit作爲評論,但在您的問題中,您使用此功能並不明顯。您是否還使用允許PHPUnit和PhantomJS進行集成的庫,如果有的話? – apokryfos

回答

1

這看起來像PHPUnit的PHPUnit_Extensions_Selenium2TestCase。

當面對這個問題,我已經創建了下面的函數(我把它改成一個共同的基礎測試用例類自己,但它也可以在你的測試類):在測試本身

protected function waitForAlert($expectedText, $timeout = 10000) 
{ 
    $this->waitUntil(
     function() use ($expectedText) { 
      if ($this->alertText() == $expectedText) { 
       return true; 
      } 
     }, 
     $timeout 
    ); 
    $this->acceptAlert(); 
} 

然後你可以使用它作爲這樣的:

$this->waitForAlert('You need a complete profile'); 

如果沒有警告將失敗後的超時設置

希望這有助於;)

+0

謝謝!這有幫助! – user3920295