2016-08-09 7 views
1

PHP CodeceptionとWebDriver PHPラッパー(Facebook)を使用して、PhantomJSまたは実際のブラウザで実際のページリクエストの環境変数を取得することは可能でしょうか?WebDriverモジュールからCodeceptionの完全なリクエストURLを取得

受け入れテストの背後にある技術について誤解しているかもしれませんが、CodeceptionのようなテストフレームワークがPhantomJSやChromeやFirefoxなどの実際のブラウザを使用してページをリクエストしていることを考えると、 $ _SERVERグローバル変数残念ながら、WebDriverのCodeceptionモジュールやFacebookのPHP WebDriverラッパーでこれを提供するメソッドは見つかりません。

具体的には、SSLを使用するページがあるため、ページを訪問したときに301リダイレクトが発生することが予想されます。 これをチェックし、$ _SERVER ['HTTPS']グローバル変数がそれを行うべきかどうかをチェックするために、私はCodeceptionで受け入れテストケースを持つ必要があります。

最初に、URLを「https://」と照合しようとしましたが、WebDriverラッパーメソッド_getCurrentUrl()は、プロトコルとホストなしでURI部分のみを配信します。

次に、カスタムヘルパーアクション内で$ _SERVER変数を取得しようとしましたが、ブラウザの要求ではなくCLI環境から直接アクセスされるように見えます。

答えて

1

いいえ、$ _SERVERはサーバー側にあり、所有しているものはすべてクライアントであるため、受け入れテストで$ _SERVERにアクセスすることはできません。

完全なURLを確認したい場合は、getCurrentURL webdriverインスタンスのメソッドを使用できます。これは、ヘルパーの_getCurrentUriメソッドと同じ方法でアクセスできます。

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

は今完璧な作品、ありがとうございます。私は完全なURLを取得し、 '$ this-> assertRegExp( '/ https:\/\ /(。*)/'、$ url);'を使ってSSLを検出することができます。 –

2

すでに使用webdriverをモジュールの場合:

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

関連する問題