hac*_*sid 5 coffeescript phantomjs
我有一个脚本(下面)用3步骤过程擦除网站.一次设置为最多1页时效果很好.然而,当我把它增加到2时,事情开始变得不稳定.onFinished比我预期的更早开火,页面还没有完全加载.因此,我脚本的其余部分会中断.知道为什么会这样吗?我应该补充一点,我使用的是最新版本(1.5).
MAX_PAGES = 1
###
changing MAX_PAGES to >1 causes some pages onFinished event to fire before
the page is fully rendered. this is evident by the fact that there are >1 images
for some pages. i havent been able to reproduce using microsoft.com, but on some
pages i was working on the first onLoadFinished seemed to be called before the page
was actually fully loaded based on the look of the rendered images
###
newPage = (id) ->
context = {}
context.id = id
context.step = 0
context.page = require('webpage').create()
context.page.onLoadStarted = ->
context.step++
context.page.onLoadFinished = (status) ->
console.log status
if status is 'success'
context.page.render("#{context.id}_#{context.step}.png")
else
context.page.release()
context.page.open('http://www.microsoft.com')
console.log 'started loading'
newPage id for id in [1..MAX_PAGES]
Run Code Online (Sandbox Code Playgroud)
我认为问题与 PhantomJS 中的每个网页都使用相同的 QNetworkAccessManager 这一事实有关,因此,当每个网页对象完成加载时, finished()信号就会触发。可能需要修改 PhantomJS 的代码才能解决此问题。我之前在尝试在 PhantomJS 中并行加载多个页面时注意到了这一点。我正在开发的应用程序使用 QtWebkit 并同时加载多个页面,因此我必须确保每个网页都有自己的 QNetworkAccessManager,以便 finish() 信号不会相互干扰。
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |