2017-08-09 1 views
1

Alvin Bunkの記事に基づいてlink to article Web-cralwerを作成して、Webサイトにログインしてからフォームを送信したいと考えています。WebクローラーのAJAXブロックを扱うか、手動で入力を作成する

私の問題は、クリックして空のリンクを生成するAjaxブロックがあり、入力する必要がある入力が少ないため、空のリンクを何らかの形でクリックするか手動で入力する必要があるということです。

私はそれを動作させるためにしようとする多くの点で、以下のコードを変更しますが訪問関数に私は

を捕まってしまった私は、不明なエラーを取得:メンバ関数の訪問を呼び出し()はnull

... 
use PHPUnit\Framework\TestCase; 

class MinkPetitionTest extends TestCase 
{ 
    ... 

あなたが最初とrを参照することを試みることができます:あなたは、最新のPHPUnitを使用している場合、そのようなあなたのテストクラスを変更する必要が

<?php 
require 'vendor/autoload.php'; 

trait MinkSetup 
{ 
    private $minkBaseUrl; 
    private $minkSession; 

    /** 
    * @before 
    */ 
    public function setupMinkSession() 
    { 
     $this->minkBaseUrl = 'https://www.url.com'; 
     $driver = new \Behat\Mink\Driver\Selenium2Driver('firefox'); 
     $this->minkSession = new \Behat\Mink\Session($driver); 
     $this->minkSession->start(); 
    } 

    public function getCurrentPage() 
    { 
     return $this->minkSession->getPage(); 
    } 

    public function getCurrentPageContent() 
    { 
     return $this->getCurrentPage()->getContent(); 
    } 

    public function visit($url) 
    { 
     echo $url; 
     $this->minkSession->visit($url); 
    } 

    public function login($user, $pass){ 
     $this->minkSession->visit('complete url'); 
     $page = $this->getCurrentPage(); 
     echo $page; 
     $page->fillField('email', $user); // Enter username. 
     $page->fillField('password', $pass); // Enter password. 
     $page->pressButton('Login'); 

     $content = $this->getCurrentPageContent(); 
     $this->assertContains('logout', $content); 
    } 

    /** 
    * @afterClass 
    */ 
    public function logout(){ 
     $page = $this->getCurrentPage(); 
     $page->clickLink('logout'); 
    } 
} 
use PHPUnit\Framework\TestCase; 


class MinkPetitionTest extends TestCase 
{ 
    use MinkSetup; 

    public function testSubmitPage(){ 
     $this->login('user', 'pw'); // Login first. 

     $this->visit('full url'); 
     $page = $this->getCurrentPage(); // Get the page. 
     echo $page; 
     $page->fillField('form_ban_id', '1234'); 
     $page->pressButton('form_find_student'); 

     $content = $this->getCurrentPageContent(); // Get page content. 
     $this->assertContains('<u>No Petitions</u> exist for Some User Student ID: 1234', $content); 
    } 
} 



$client = new MinkPetitionTest(); //tried to get something to work 
$client->testSubmitPage(); //same here 
+0

ことを試してみてください。 –

+0

こんにちはキングです。どこかにあなたのAJAXコードのコピーがありますか?私はすぐにgithubにチェックインする準備ができているMinkプロジェクトを持っていますが、Minkの使用の全ポイントはJavascriptやAJAXのためです。だから私はあなたが使用しているコードを理解する必要があります。 pastebinに投稿してURLをコピーすることもできます。 –

答えて

0

エスチュール?


EDIT#2

はまた、あなたの形質ファイルが正しくありません。それは次のようになります。

trait MinkSetup 
{ 
    private $minkBaseUrl; 
    ... 

    public function visit($url) 
    { 
     $this->minkSession->visit($this->minkBaseUrl . $url); 
    } 
    ... 

は、私はPHPUnitの変更の必要な変更と私のミンクの記事を更新し

+0

同じキャッチされていないエラー:訪問機能でnullのメンバー関数visit()を呼び出すと、コードが更新されました –

+0

コードを間違って入力しましたか? '$ this-> visit( 'full url');'のようにパラメータを引用する必要があります。形質ファイルについての私の編集#2を見てください。私のチュートリアルに従ってコードをコピーしていることを確認してください。軽微な変更があるはずです。 –

+0

私はちょうど完全なURLの例を作った、リンクは正しいです、訪問機能は動作しません、また私立constを使用するように変更されましたが、訪問はいつも何らかの理由でnullになります –

関連する問題