2016-09-13 16 views
0

私はヘッドレスブラウザ(phantomjs)をMinkと一緒に使用して、私のウェブサイトで機能テストを行っています。
この設定では、リンクをクリックするなどして定期的にファイルをダウンロードすることはできません。だから私はリンクまたはボタンからURLを抽出し、手動でファイルをダウンロードする必要があります。
私がちょうど述べたようにミンクのリンク/ボタンのクリックをシミュレートする方法はありますか?

が時々あり、ダウンロードのためのリンク()ではありませんが、フォームでボタン(例:形式のレポートのデータを入力し、提出のレポートファイルを受け取ります) 。

だから私は何をする必要があるかが、リンクやボタンのクリックをシミュレートし、を送信し、データを手動でファイルをダウンロードすることに使用されていたであろうことを要求するためにデータを抽出しています。

これを行う方法はありますか?
注::私は実際にファイルをダウンロードするのにguzzleを使用しています。

+0

要素を見つけるために使用できるMinkのfindメソッドが必要です。このメソッドはオブジェクトを返します。そこからclickを使用するか、必要なurlを与えるhref属性を取得できます。クリックすると、find by cssを使い、をクリックしてください。 – lauda

+0

私は知っている、なぜそれが必ずしもリンクではないことに注意している。ファイルのために送られたリクエストは、 'POST'でもかまいません。 – user2268997

答えて

1

Mmmm ...あなたがこれを解決したかどうかは分かりませんが、典型的なミンクの方法の代わりとしてのみです。 Phantomjsはjavascriptベースのブラウザエンジンなので、javascriptで試しましたか?

あなたはこのような何かを試みることができる:あなたがここにJavaScriptでこれを行うための方法を見つけることができます

public function getElementHref($element) 
{ 
    /* @var FeatureContext $this */ 
    $function = "(function(){ 
     //Javascript method to get the href. 
    })()"; 
    try { 
     return $this->featureContext->getSession()->evaluateScript($function); 
    } catch (Exception $e) { 
     throw new Exception('Element not found'); 
    } 
} 

を:How to get anchor text/href on click using jQuery?

そして、(ファイルの種類に応じて)のfile_get_contentsで返されたURLを使用すると、それでおしまい。

+0

私は別のアプローチをとったが、これはうまくいくはずだ。 – user2268997

関連する問題