Функция в вашем последнем includeJs
вызове здесь не будет работать - как вы заметили, она помещена в «песочницу», и это означает, что замыкания не будут работать, поэтому title
не будет определено. Метод передачи переменных в page.evaluate
отмечен как запрос функции , но недоступен в PhantomJS v.1.4.1.
Обычно я обхожу это с помощью конструктора Function
, который позволяет вам создать функцию, используя строку:
var myVar = {some:"values", I:"want to pass into my page"},
test = new Function("window.myVar = " + JSON.stringify(myVar));
page.evaluate(test);
Теперь вы можете evaluate
функцию, подобную той, которая у вас есть, со ссылкой на myVar
в песочнице, и ваши данные будут доступны в клиентской области.