2016-04-14 13 views
6

Jestem twórcą produktu z moim testem i muszę uzyskać adres URL po przesłaniu formularza.jak uzyskać aktualny adres URL z testu kodekceptacji i phantomjs?

Czy po przesłaniu przycisku można uzyskać adres URL w zakresie testowym?

$I->click('#formSubmit'); 
$I->wait(5); // wait for redirect to new url 
$url = $I->someFunctionToGetCurrentUrl()` 

Używam tego testu z konsoli, a nie z poziomu przeglądarki internetowej, więc nie mam dostępu do $ _SERVER, że jest po stronie serwera.

Ale jeśli mam kilka metod takich jak $I->canSeeCurrentUrlEquals() w ramach codeception wtedy powinno jakoś być w stanie uzyskać dostęp do aktualnego adresu url ...

jak to zrobić?

+1

co masz na myśli przez "w zakresie testowym"? –

+0

Uruchomiłem ten test z konsoli, a nie z przeglądarki internetowej, więc nie mam dostępu do $ _SERVER, który znajduje się po stronie serwera. Ale jeśli mam pewne metody, takie jak '$ I-> canSeeCurrentUrlEquals()' w ramach kodeków, to powinienem jakoś mieć dostęp do aktualnego adresu URL ... jak to zrobić? to jest pytanie ... –

+0

Edytuj pytanie, aby dołączyć te dodatkowe informacje. – buczek

Odpowiedz

6

Rozwiązaniem było dodać metodę pomocnika AcceptanceHelper w _support plik/AcceptanceHelper.php:

class AcceptanceHelper extends \Codeception\Module 
    { 

     /** 
     * Get current url from WebDriver 
     * @return mixed 
     * @throws \Codeception\Exception\ModuleException 
     */ 
     public function getCurrentUrl() 
     { 
      return $this->getModule('WebDriver')->_getCurrentUri(); 
     } 

    } 

a następnie używać go w teście:

$url = $I->getCurrentUrl(); 
1

Jeśli nie masz Klasa AcceptanceHelper/FunctionalHelper (a więc $ this-> moduł getModule lub $ this-> client są niezdefiniowane) powinny działać następujące elementy w klasie AcceptanceTester/FunctionalTester:

public function getCurrentUrl() { 
    return $this->executeJS("return location.href"); 
} 
+0

Jaką edycję potrzebuje? – tschumann

Powiązane problemy