处理网页爬虫中的AJAX块或创建手动输入
基于Alvin Bunk文章link to article我想创建一个web-cralwer,它登录到一个网站然后提交一个表单。处理网页爬虫中的AJAX块或创建手动输入
我的问题是,在该网站上有一个Ajax块,在单击和空链接后生成一些输入,我需要填写,所以我需要点击某个空链接或手动插入输入。
我改变了下面的代码在很多方面,试图使其工作,但对访问功能我被困
我得到未捕获的错误:空
调用一个成员函数访问()<?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
你需要,如果你使用的是最新的PHPUnit来改变你的测试类,像这样:
...
use PHPUnit\Framework\TestCase;
class MinkPetitionTest extends TestCase
{
...
你能尝试的第一和看到将R esult?
编辑#2
另外,你的特质文件不正确。它应该是:
trait MinkSetup
{
private $minkBaseUrl;
...
public function visit($url)
{
$this->minkSession->visit($this->minkBaseUrl . $url);
}
...
试一下
相同的未捕获错误:在访问函数中调用成员函数visit()null,我更新了代码 –
您是否错误地输入了代码?你有'$ this-> visit(full url');'但是参数应该被引用,像这样:'$ this-> visit('full url');'。查看我的编辑#2关于特质文件。确保您按照我的教程复制代码。应该有一些小的改变。 –
我刚刚做了一个完整的URL的例子,链接是正确的,访问功能不起作用,也改为使用私人常量,但由于某种原因访问将始终为空 –
我更新了我与PHPUnit的变化所需的改变水貂文章。 –
嗨,国王。你有没有你的AJAX代码的副本?我已经有了一个Mink项目,可以很快检查到github,但是,使用Mink的全部重点都是因为Javascript或AJAX;所以我需要了解你使用的是什么代码。您也可以将其发布到pastebin并复制该网址。 –