2017-10-31 7 views
0

index.php를우리가 볼 수 있듯이, DIV 번호 쇼에서 문자열을 얻을 수있는이 방법이 phantomJS의 PHP 나 MTS

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
<script> 
function showtext() 
{ 
    $.ajax({ 
     url: 'process.php', 
     type: 'GET', 
     data: {name: $('input').val()}, 
     success: function(d){ 
      $('#show').text(d); 
     } 
    }) 
} 
</script> 
<input type="text" value="John"> 
<button id="clickme" onclick="showtext()">click me</button> 
<div id="show"></div> 

를 사용하여 자바 스크립트 함수를 실행하는 방법 : 버튼 또는 실행 showtext()을 클릭합니다.

나는 phantomJSMTS을 배우는 데 3 시간을 소비하지만,이 순간에 멈추었습니다. MTS는 항상 showtext() is not a valid function name 오류를 발생 시키지만 phantomJS는 전혀 실행되지 않습니다 (멈춤). 나는 SO와 구글에서 찾은 모든 것을 시도한다. 그러나 아직도 아무것도 얻지 않는다.

이 내 phantomjs 코드

var webPage = require('webpage'); 
var page = webPage.create(); 

page.onConsoleMessage = function(msg) { 
    console.log(msg); 
} 

page.open('http://creativecoder.xyz/test/', function(status) { 

    page.evaluate(function() { 
     showtext(); 
     var a = document.getElementById("show").innerHTML; 
     console.log('xx: '+ a); 
    }); 

    phantom.exit(); 

}); 



[email protected]:/var/www/html/test# phantomjs test.js 
^C 
[email protected]:/var/www/html/test# phantomjs test.js 
^C 
[email protected]:/var/www/html/test# phantomjs test.js 
^C 
[email protected]:/var/www/html/test# phantomjs test.js 

중지하고 아무것도 돌려주지 않기 때문에 난 항상 가까이 프로세스를 강제합니다.

JQuery와

var page = require('webpage').create(); 
page.open('http://creativecoder.xyz/test/', function() { 
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
     page.evaluate(function() { 
      var a = 'asdsad'; 
      $("#clickme").click(); 
      a = $('#show').html(); 
      console.log(a); //overide a 
     }); 
     phantom.exit() 
    }); 
}); 

를 사용하여 다른 스크립트입니다 여전히 아무것도 없어.

showtext()를 실행하는 방법/클릭 한 다음 두 라이브러리를 사용하여 div # show에서 텍스트를 가져 오는 방법?

+0

어떤 PHP 코드를 제공하여 오류 – YouneL

+0

의 원인을 확인할 수 있습니까? 통해 관심을 가져 주셔서 감사합니다 – plonknimbuzz

답변

0

page.evaluate을 호출하기 전에 상태 인수를 확인해야하며 디버그 목적으로 만들어진 page.onConsoleMessage을 사용하지 말고 대신 페이지에서 원하는 값을 반환하고 사용하도록 evaluate 함수에 지시해야합니다. 내 예를 살펴 : 당신은 또한 정확히 어떻게되는지 디버거처럼, 현재 페이지의 스크린 샷을 줄 것이다 page.render('img.png')을 사용할 수 있습니다

var page = require('webpage').create(); 

// I'm trying here to simulate a normal browser, you can remove this part of code if you want 
page.settings.userAgent = 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/538.1'; 
page.viewportSize = { width: 1600, height: 794 }; 

// open page 
page.open('http://creativecoder.xyz/test/', function (status) { 

    // checking status 
    if (status !== 'success') { 
     console.log('cannot open page'); 
     phantom.exit(); 
    } 

    var result = page.evaluate(function() { 

     // click button 
     document.getElementById('clickme').click(); 

     // get text result 
     var res = document.getElementById('show').innerText; 

     return res; 

    }); 

    console.log(result); 

    phantom.exit(); 

}); 

.

+0

http://creativecoder.xyz (내 도메인) 또는 google.com을 사용하는 경우 쉘이 실행을 멈추지 않고 반환하지 않습니다. 하지만 bing.com으로 바뀌면 스크립트가 제대로 실행되고 있습니다. – plonknimbuzz

+0

ohy, 실제로 i, 상태를 사용하고 있지만 간단하게 만들었습니다. – plonknimbuzz

+0

어떤 PhantomJs 버전을 사용하고 있습니까? – YouneL