我知道存在这个问题的不同变体,因为我花了几个小时寻找例子。基本上我的脚本有3个我想要打开的链接,等待我正在寻找的内容存在于页面中然后在本地保存页面的HTML。然后为第二和第三个链接做同样的事情。我的代码在
之下 var system = require('system')
var page = require('webpage').create();
var fs = require('fs');
var wd = 'mylocaldir'
var url1 = '1st url link'
var url2 = '2nd url link'
var url3 = '3rd url link'
var file1 = 'url1.html'
var file2 = 'url2.html'
var file3 = 'url3.html'
page.open(url1, function() {
//do {phantom.page.sendEvent('mousemove'); } while (page.evaluate(function() {return !document.querySelectorAll(".centercontent").length > 0} ))
fs.write(file1, page.content, 'w');
page.open(url2, function() {
//do {phantom.page.sendEvent('mousemove'); } while (page.evaluate(function() {return !document.querySelectorAll(".centercontent").length > 0} ))
fs.write(file2, page.content, 'w');
page.open(url3, function(){
//do {phantom.page.sendEvent('mousemove'); } while (page.evaluate(function() {return !document.querySelectorAll(".centercontent").length > 0} ))
fs.write(file3, page.content, 'w');
var cookies = JSON.stringify(phantom.cookies);
fs.write("cookies.txt", cookies, 644)
});
});
});
phantom.exit()
我希望do-while循环会发送一个鼠标事件,直到我想要的内容返回true但它不能像我希望的那样工作。实际上,它似乎不会打开页面,也不会保存页面的HTML。我特意寻找一种方法来构造这个脚本,以便每个url链接,phantomjs将打开链接,等待page.evaluate(function() {return !document.querySelectorAll(".centercontent").length > 0} ))
返回true,在本地保存页面的HTML然后为接下来的两个做同样的事情网址链接。
如何打开页面,等待此特定条件page.evaluate(function() {return !document.querySelectorAll(".centercontent").length > 0} ))
返回true,在本地保存页面,然后对我希望在同一会话中打开的另一个页面重复该过程?