2016-11-28 2 views
0

ich verwende Codeception 2.2.6 eine Laravel App zu testen. Ich habe einen einfachen Test, der eine Seite mit einem Formular öffnet, einige Felder füllt und dann auf eine Schaltfläche klickt. Wenn ich den Test ausführen es funktioniert, bis der Klick Schritt in Ordnung und dann scheitert es mit dem folgenden Fehler:

[ErrorException] Undefined property: DOMDocument::$tagName 

Der Stack-Trace zeigt, dass der Fehler aus dem clickButton Verfahren in Codeception\Lib\InnerBrowser.php angehoben wird:

/** 
* 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; 
} 

Ich habe andere ähnliche Tests, klicken Sie auf verschiedene Seiten ohne Probleme. Könnte mir jemand helfen herauszufinden, was den Fehler verursacht

Antwort

0

Das Problem war, dass die Seite, die den Test auf nicht gültige HTML ausgeführt wurde. Ich hatte ein Etikett, das nicht richtig geschlossen wurde. Dies führte dazu, dass der Codeception-DOM-Crawler fehlschlug.

Edit (re meine Anmerkung unten):

Der Bruch HTML hatte diese wesentliche Struktur:

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

Können Sie ein Problem bei https://github.com/Codeception/Codeception/issues erhöhen und ein HTML-Beispiel bereitstellen, das diesen Fehler verursacht hat? Danke – Naktibalda

+0

Hier gehts: https://github.com/Codeception/Codeception/issues/3783. Es stellt sich heraus, dass es sich nicht um ein falsch geschlossenes Tag handelte, sondern um ein falsch geöffnetes Form-Tag. Ich habe meine Antwort oben bearbeitet, um klarer zu sein. – ralbatross

Verwandte Themen