function loop (array) {
var i = 0, l = array.length
result = '\r\ncheck data: ' + new Date().toISOString() + '\r\n'
checkPrice(products[checkedNumber])
}
每一次开始遍历商品前,先设置一个检查时间至 result 变量中,然后执行 checkPrice 方法以获取对应商品的价格。
定义获取商品价格函数
function checkPrice (productId) {
console.log('loading: http://item.yixun.com/item-' + productId + '.html')
page.open('http://item.yixun.com/item-' + productId + '.html', function (status) { //打开商详页
if (status !== 'success') {
console.log('Unable to access network')
} else {
var price = page.evaluate(function() {
return /****获取的价格****/
})
checkedNumber++ //增加索引号
result += 'product id: ' + productId + ' price: ' + price + '\r\n' //记录商品价格
if (checkedNumber >= products.length) { //遍历完一次后输出日志并重置索引
result += 'end data: ' + new Date().toISOString() + '\r\n'
console.log(result)
checkedNumber = 0
} else { //继续获取下一个商品价格
checkPrice(products[checkedNumber])
}
}
})
}
让 PhantomJS 根据商品 ID 打开对应的商品详情页后,进入页面(page.evaluate)并获取页面中的商品价格,然后记录于 result 变量中。当遍历完商品后,输出所记录的日志。
使用 PhantomJS 实现自动化页面体检报告(二) —— 定时检查页面
回到上一篇的出发点,出门在外,如何能够保证我们的页面能够正常呢?是不是应该带个电脑,是不是上网检查一下?
PhantomJS 来为你解决难题。利用 PhantomJS,我们可以定时检查页面状态并记录在日志中。
如果你不了解 PhantomJS,推荐你先阅读这篇文章。
文章中仅仅使用 PhantomJS 进行定时检查,但在实际环境中,推荐集成 CI 工具执行定时任务。
构建一个定时任务
我们以检查易迅商详页为例:
分析一下场景,我们需要实现的功能点有:
针对这 3 个功能点,我们编写几段代码:
定义基础变量
定义定时函数
定时函数用来完成每次的大任务,即
loop(products)
,并设定下次的执行时间。定义商品检查函数
每一次开始遍历商品前,先设置一个检查时间至
result
变量中,然后执行checkPrice
方法以获取对应商品的价格。定义获取商品价格函数
让 PhantomJS 根据商品 ID 打开对应的商品详情页后,进入页面(
page.evaluate
)并获取页面中的商品价格,然后记录于result
变量中。当遍历完商品后,输出所记录的日志。运行结果
日志已经被记录了,我们可以清晰的看到对应的时间点上,商品的价格。现在日志存在命令行中,更进一步,我们可以将日志写入文件,或者通过邮件发送至你的邮箱,这里不再过多赘述(其实是我懒=v=)。
Thanks
示例的完整代码
为避免不必要的麻烦,已将获取商品价格的代码用注释替代。