Как запустить функцию JavaScript с помощью phantomJS php или MTS

index.php

<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>

как мы видим, есть два способа получить строку из div # show: нажать кнопку или запустить showtext ().

я трачу 3 часа на обучение phantomJS а также МТС, но я застрял в этот момент. МТС всегда выкидывает ошибку showtext() is not a valid function name, в то время как phantomJS не работает вообще (застрял). Я пытаюсь все, что я нашел в SO и Google. но все равно ничего не получите.

это мой фантомный код

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();

});root@ga-ubuntu-512mb-sgp1-01:/var/www/html/test# phantomjs test.js
^C
root@ga-ubuntu-512mb-sgp1-01:/var/www/html/test# phantomjs test.js
^C
root@ga-ubuntu-512mb-sgp1-01:/var/www/html/test# phantomjs test.js
^C
root@ga-ubuntu-512mb-sgp1-01:/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 () / делает click, а затем получить текст из div # show, используя обе библиотеки?

0

Решение

Перед звонком page.evaluate Вы должны проверить аргумент статуса и не использовать page.onConsoleMessage это было сделано с целью отладки, вместо этого вы должны указать функции оценки возвращать все, что вы хотите со страницы, а затем использовать ее. посмотрите на мой пример:

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();

});

Вы также можете использовать page.render('img.png') это даст скриншот текущей страницы, это как отладчик, чтобы увидеть, что именно происходит.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector