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