2013-08-27 2 views
0

asp.net 양식이 있습니다. 결과를 긁어 내기 위해 자동 제출하기를 원합니다.Goutte : 자바 스크립트를 통해 입력 된 양식을 제출하는 방법

양식 드롭 다운 입력 필드 중 일부는 아약스를 통해 즉석에서 채워집니다. 하나의 필드는 "지역"필드이고, 일단 지역을 선택하면 "도시"드롭 다운이 채워집니다. Goutte 웹 크롤러를 통해 지역을 입력 한 후 도시 입력을 시도하면 잘못된 값 오류가 발생합니다.

Goutte를 통해이 작업을 수행 할 수 있습니까? 아니면 다른 것을 사용해야합니까?

대상 양식 자체는 viewstateeventvalidation 필드와 함께 asp.net으로 작성됩니다.

+1

셀렌으로 처리 할 수 ​​있습니다. 코드로 대답하려면, 내가 쓰는 언어를 알아야합니다. –

+0

안녕하세요 @PatMeeker! PHP로 작성 중입니다. 감사!!! – gkdm

답변

0

클라이언트 측 자바 스크립트 코드를 사용하여 많이 구현 된 사이트와 상호 작용하는 것은 거의 어렵거나 불가능합니다. GoutteBrowserKit과 같은 헤드리스 브라우저 에뮬레이터는 이러한 클라이언트 측 코드에 대해 전혀 모르고 있으며 실행할 수 없습니다. Selenium 또는 Sahi와 같은 브라우저 컨트롤러를 사용해야합니다.

본사의 Mink에는 헤드리스 에뮬레이터와 완전한 브라우저 컨트롤러를위한 다양한 드라이버가 있습니다. selenium2 드라이버를 사용하면 대상 페이지와 간단히 상호 작용할 수 있습니다. 예를 들면 다음과 같습니다.

<?php 
// You need to run selenium-*.jar for this to work. 

use Behat\Mink\{Mink, Session, Driver\Selenium2Driver}; 

$mink = new Mink([ 
    'selenium2' => new Session(
     new Selenium2Driver('firefox', null, 'http://example.com') 
    ), 
)); 

$page = $mink->getSession('selenium2')->getPage(); 

$page->findField('regoin-select-field-name') 
    ->selectOption('target-region-value'); 

$page->wait(5000, 'JS code to check if the select is now populated...') 
    ->select('city-select-field-name) 
    ->selectOption('target-city-value'); 

테스트되지 않은 코드이지만 아이디어가 있습니다. 또한 how wait() works을 참조하십시오.

또한 facebook/php-webdriver을보고 싶을 수도 있습니다. Mink를 사용하는 대신 Selenium webdriver 용 PHP 클라이언트.

관련 문제