2016-07-12 2 views
-1

(casperjs를 사용하여 양식을 제출)하지만 내 코드가 실행되지 않았다? 어떻게 해결할 수 있습니까? 다음은 웹의 HTML 코드 :는 웹 사이트의 양식을 제출 내가 자동으로 원하는

<form action="maill.php" method="GET" name="login"> 
    <input type="hidden" name="nav" value="" readonly="readonly" /> 
    <table> 
    <tr> 
     <td colspan=2><label for="seri">Seri</label></td> 
     <td colspan=2><input name="seri" type="number" value="" /></td> 
    </tr> 
    <tr> 
     <td colspan=2><label for="code">Code</label></td> 
     <td colspan=2><input name="code" type="number" value="" /></td> 
    </tr> 

    <tr> 
     <td colspan=2>type:</td> 
     <td><select name="type"> 
     <option value="...">...</option> 
     <option value="Viettel">Thẻ Viettel</option> 
     <option value="Mobiphone">Thẻ Mobiphone</option> 
     </select> 
    </td> 
    </tr> 

    <tr> 
    <td colspan=2>Value:</td> 
    <td><select name="value"> 
     <option value="...">...</option> 
     <option value="20">20.000 VNĐ</option> 
     <option value="50">50.000 VNĐ</option> 
    </select> 
    </td> 
</tr> 

<tr align="center"> 
    <td> 
    <input type="radio" name="server" value=1 /> Server 1 
    </td> 
    <td> 
    <input type="radio" name="server" value=2 /> Server 2 
    </td> 
</table> 
<button type="submit" value="Login" name="submit">Get gift</button><br /> 
</form> 

내가 casperjs를 사용하여 양식을 제출하려면, 여기 내 코드입니다 :

// initiate 
var casper = require('casper').create(); 

// submit form 
casper.start('http://shopchube.click/index3.html', function() { 
    this.fillSelectors('form[name ="login"', { 
    'input[name = seri ]' : '55883323777', 
    'input[name = code]' : '5591535443615', 
    'input[name = type ]' : 'Viettel', 
    'input[name = value ]' : '50', 
    'input[name = server ]' : '2', 
    }, true); 
}); 
// get title of the page after submit form 
casper.then(function(){ 
    this.echo(this.getTitle()); 
}); 

casper.run(); 

내 코드를 실행하지만, 어떤 일을 표시하지 않았다 양식 제출 후 페이지의 제목이됩니다. 고맙습니다!

답변

2

먼저, 코드에서 :

this.fillSelectors('form[name ="login"', {}, true); 

form[name ="login"form[name ="login"]해야한다.

둘째, 당신은 <select> 요소를 찾을 수 select[name = <name>]를 사용해야합니다.

this.fillSelectors('form[name ="login"]', { 
    'input[name = seri ]' : '55883323777', 
    'input[name = code]' : '5591535443615', 
    'select[name = type ]' : 'Viettel', 
    'select[name = value ]' : '50', 
    'input[name = server ]' : '2', 
}, true); 

내 테스트 예 :

CasperJS 스크립트 :

var casper = require('casper').create(); 
casper.start('http://localhost:63344/CasperSheet/form.html', function() { 
    this.fillSelectors('form[name ="login"]', { 
     'input[name = seri ]' : '55883323777', 
     'input[name = code]' : '5591535443615', 
     'select[name = type ]' : 'Viettel', 
     'select[name = value ]' : '50', 
     'input[name = server ]' : '2', 
    }, true); 
}).then(function(){ 
    this.echo(this.getTitle()); 
}); 

casper.run(); 

form.html :

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<form action="target.html" method="GET" name="login"> 
    <input type="hidden" name="nav" value="" readonly="readonly" /> 
    <table> 
     <tr> 
      <td colspan=2><label for="seri">Seri</label></td> 
      <td colspan=2><input name="seri" type="number" value="" /></td> 
     </tr> 
     <tr> 
      <td colspan=2><label for="code">Code</label></td> 
      <td colspan=2><input name="code" type="number" value="" /></td> 
     </tr> 

     <tr> 
      <td colspan=2>type:</td> 
      <td><select name="type"> 
       <option value="...">...</option> 
       <option value="Viettel">Thẻ Viettel</option> 
       <option value="Mobiphone">Thẻ Mobiphone</option> 
      </select> 
      </td> 
     </tr> 

     <tr> 
      <td colspan=2>Value:</td> 
      <td><select name="value"> 
       <option value="...">...</option> 
       <option value="20">20.000 VNĐ</option> 
       <option value="50">50.000 VNĐ</option> 
      </select> 
      </td> 
     </tr> 

     <tr align="center"> 
      <td> 
       <input type="radio" name="server" value=1 /> Server 1 
      </td> 
      <td> 
       <input type="radio" name="server" value=2 /> Server 2 
      </td> 
    </table> 
    <button type="submit" value="Login" name="submit">Get gift</button><br /> 
</form> 
</body> 
</html> 
이 코드를 사용해보십시오3210

target.html 자세한 :

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Target Page</title> 
</head> 
<body> 
Target Page 
</body> 
</html> 

시험 : 당신은 여전히 ​​몇 가지 문제를 가지고있는 경우

$ casperjs form.js 
Target Page 

는 여기에 코멘트를 남겨 주시기 바랍니다. 또한 모든 것이 잘 작동하면 내 답변을 수락하는 것을 잊지 마십시오.