2016-11-28 5 views
0

私はLaravelアプリケーションをテストするためにCodeception 2.2.6を使用しています。私は、フォームでページを開き、いくつかのフィールドを塗りつぶし、ボタンをクリックする簡単なテストをしています。私は、テストを実行すると、クリック段階まで正常に動作し、それが次のエラーで失敗します

[ErrorException] Undefined property: DOMDocument::$tagName 

スタックトレースは、エラーがCodeception\Lib\InnerBrowser.phpclickButton方法から発生していることを示しています。

/** 
* Clicks the link or submits the form when the button is clicked 
* @param \DOMNode $node 
* @return boolean clicked something 
*/ 
private function clickButton(\DOMNode $node) 
{ 
    $formParams = []; 
    $buttonName = (string)$node->getAttribute('name'); 
    $buttonValue = $node->getAttribute('value'); 

    if ($buttonName !== '' && $buttonValue !== null) { 
     $formParams = [$buttonName => $buttonValue]; 
    } 

    while ($node->parentNode !== null) { 
     $node = $node->parentNode; 
     if ($node->tagName === 'a') { 
      $this->openHrefFromDomNode($node); 
      return true; 
     } elseif ($node->tagName === 'form') { 
      $this->proceedSubmitForm(
       new Crawler($node), 
       $formParams 
      ); 
      return true; 
     } 
    } 
    return false; 
} 

私は問題のない別のページをクリックする他の同様のテストがあります。誰かがエラーの原因を突き止めるのを助けることができます

答えて

0

問題は、テストが実行されていたページが有効なHTMLではありませんでした。私は正しく閉じられていないタグを持っていた。これは、CodeceptionのDOMクローラが失敗する原因となりました。

編集(以下、私のノートを再):

破壊HTMLは、この基本的な構造を持っていた:

<div> <!-- this should be inside the form --> 
     <form> <!-- this should be outside the div --> 
    </div> 
    <button>The Button</button> 
</form> 
+0

をあなたはhttps://github.com/Codeception/Codeception/issuesで問題を提起でしたし、そのエラーの原因となったHTMLのサンプルを提供しますか?ありがとう – Naktibalda

+0

ここに行く:https://github.com/Codeception/Codeception/issues/3783。それは不適切に閉じたタグではなく、不適切に開いたフォームタグだったことが判明しました。上記の私の答えをより明確に編集しました。 – ralbatross

関連する問題