2016-04-14 1 views
6

私は私のテストでestoreで製品を作成しており、フォームを送信した後にURLを取得する必要があります。どのようにcodeception&phantomjsテストから現在のURLを取得するには?

ボタンを送信した後、のテストスコープにURL を取得することはできますか?

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

私は、コンソールからではなく、Webブラウザからこのテストを実行しているので、私は、サーバーの側にある$ _SERVERにアクセスすることはできません。それを行うにはどのように

しかし、私はcodeceptionの枠組みの中で$I->canSeeCurrentUrlEquals()のようないくつかのメソッドを持っているならば、私は何とか現在のURLにアクセスすることができるはず...

?あなたが持っていない場合は

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

「テストの範囲」とはどういう意味ですか? –

+0

私はコンソールから、Webブラウザではなく、このテストを実行しているので、サーバー側にある$ _SERVERにアクセスできません。しかし、もし私が '$ I-> canSeeCurrentUrlEquals()'のようないくつかのメソッドをコード化フレームワークで使えば、どうにかして現在のURLにアクセスできるはずです...どうすればいいですか?それは質問です... –

+0

質問を編集してこの追加情報を含めてください。 – buczek

答えて

6

ソリューションは_Support/AcceptanceHelper.phpファイルにAcceptanceHelperにヘルパーメソッドを追加しましたAcceptanceHelper/FunctionalHelperクラス(したがって$ this-> getModuleまたは$ this-> clientは定義されていません)AcceptanceTester/FunctionalTesterクラスの次のコードは動作します:

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

:その後、

class AcceptanceHelper extends \Codeception\Module 
    { 

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

    } 

、テストでそれを使用します。

+0

どのような編集が必要ですか? – tschumann

関連する問題