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, используя обе библиотеки?
Перед звонком 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')
это даст скриншот текущей страницы, это как отладчик, чтобы увидеть, что именно происходит.
Других решений пока нет …