2016-08-09 163 views
1

Mit PHP Codeception und WebDriver PHP Wrapper (Facebook), ist es im Allgemeinen möglich, die Umgebungsvariablen der tatsächlichen Seitenanforderung, von PhantomJS oder einem echten Browser verwendet verwendet?Erhalten Sie die vollständige Anfrage URL von WebDriver-Modul in Codeception

Vielleicht ist es nur mein Missverständnis der Technologie hinter Abnahmetests, aber angesichts der Tatsache, dass ein Test-Framework wie Codeception eine Seite mit PhantomJS oder einen echten Browser wie Chrome oder Firefox anfordert, würde ich erwarten, Zugriff auf z. die globale Variable $ _SERVER. Leider kann ich keine Methoden finden, die dies in WebDriver Codeception Modul oder Facebook PHP WebDriver Wrapper bieten.

Insbesondere habe ich eine Seite, die nur SSL verwenden soll, so dass eine 301-Umleitung beim Besuch der Seite erwartet wird. Ich brauche einen Acceptance-Test-Fall in Codeception, um genau das zu überprüfen und die globale Variable $ _SERVER ['HTTPS'] sollte es tun.

Zuerst habe ich versucht, die URL mit 'https: //' abzugleichen, aber die WebDriver-Wrapper-Methode _getCurrentUrl() liefert nur den URI-Teil ohne Protokoll und Host.

Dann habe ich versucht, die Variable $ _SERVER in benutzerdefinierte Helper Aktion zu bekommen, aber die direkt zugegriffen wird sieht aus wie es aus der CLI-Umgebung kommt, nicht eine Browser-Anfrage.

Antwort

1

Nein, Sie können in Abnahmetests nicht auf $ _SERVER zugreifen, da $ _SERVER serverseitig ist und Sie nur einen Client haben.

Wenn Sie eine vollständige URL überprüfen möchten, können Sie getCurrentURL Methode der Webdriver-Instanz verwenden, kann auf die gleiche Weise wie _getCurrentUri Methode in Ihrem Helfer zugegriffen werden.

public function checkUrl() 
{ 
    $url = $this->getModule('WebDriver')->webDriver->getCurrentURL(); 
    //do your checks here 
} 
+0

Danke, jetzt perfekt funktioniert. Ich bekomme die vollständige URL und kann '$ this-> assertRegExp ('/ https: \/\/(. *) /', $ Url);' verwenden, um SSL zu erkennen. –

2

Wenn bereits verwendet WebDriver Modul:

$currentUrl = $I->executeJS('return jQuery(location).attr("href");');