2016-06-02 7 views
0

Ich habe ein Dropdown-Menü mit Listenelementen, die manchmal statisch sind und manchmal geändert werden. Mein Hauptziel ist es, zu überprüfen, ob das Menü einen Inhalt enthält [gefolgt von der Ausgabe dieses Inhalts und dem Exportieren in einen Bericht].Behat - Checklistenelement enthält Inhalt

Die Funktion, die ich in meinem FeatureContext.php erstellt wurde, sieht wie folgt aus:

/** 
* @Then /^I check content exists for element "([^"]*)"$/ 
*/ 
public function iCheckElementContent($locator) 
{ 

    //check element exists on page 
    $element=$this->assertSession()->elementExists('css', $locator); 

    //check element content is not empty (returns exception if true) 
    if (empty($this->getPage()->find('css', $locator)->getText())) { 
     throw new Exception; 
    } 
} 

Wie Sie feststellen können, wird auf der Grundlage der Antwort auf die andere Frage in Bezug auf diese Funktion. Mein Problem ist jedoch, dass es den getPage() Parameter nicht zu mögen scheint. Der Fehler, den ich bekomme, ist:

PHP Fatal error: Uncaught Error: Call to undefined method FeatureContext::getPage() 

Ich versuchte auch, es in getValue() zu ändern, ohne Erfolg. Irgendwelche Ideen? (Bonus tolle Punkte für hilft mir auch mit dem zweiten Schritt meiner Anforderungen)

Antwort

0

Ich denke, ich habe eine Lösung gefunden, aber ich bin mir nicht sicher, ob es passiert, weil es funktioniert oder weil es nach nichts sucht und es zu finden.

$session = $this->getSession(); 
    $element = $session->getPage()->find('css', $locator); 

    //check element content is not empty (returns exception if true) 
    if (empty ($element->getText())) { 
     throw new Exception; 
    } 

Kann jemand bitte Code-Review dies?

+0

Verwenden Sie $ element! == null statt leer. Beachten Sie auch, dass die find-Methode null oder ein Objekt zurückgibt. Wenn das Element nicht gefunden wird und Sie einen getText für null verwenden, führt dies zu einem schwerwiegenden PHP-Fehler. Überprüfen Sie, ob das Element nicht null ist, und verwenden Sie getText els throw exception. – lauda