レポート サービスを監視するスクリプトを作成しています。レポートの処理方法に応じて、レポートは HTML で表示されるか、XmlHttpRequest 経由で送信されます。
ページをチェックするツールとして、HTML に最適な spynner を使用したいのですが、データが XHR 経由で来ると動作しないようです。
テストのコードは次のとおりです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__docformat__ = 'restructuredtext en'
from time import sleep
from spynner import browser
import pyquery
from PyQt4.QtCore import QUrl
from PyQt4.QtNetwork import QNetworkRequest, QNetworkAccessManager
from PyQt4.QtCore import QByteArray
def load_page(br):
ret = br.load_jquery(True)
print ret
return 'Japan' in br.html
br = browser.Browser(
debug_level=4
)
br.load('https://foobar.eu/newton/cgi-bin/cognos.cgi')
br.create_webview()
br.show()
#br.load("https://foobar.eu/newton/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/cc.xts&m_folder=iA37B5BBC0615469DA37767D2B6F1DCF1")
#br.browse()
res = br.load("https://foobar.eu:443/newton/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&ui.object=/content/folder[@name='DMA Admin Zone']/folder[@name='02. Performance Benchmark Module']/folder[@name='1. Reports']/report[@name='CQM_Test_3_HTML_Heavy_Local_Processing_Final']&ui.name=CQM_Test_3_HTML_Heavy_Local_Processing_Final&run.outputFormat=&run.prompt=true", 1, wait_callback=load_page)
d = str(pyquery.PyQuery(br.html))
if d.find("Japan") > -1:
print 'We discovered Japan!'
else:
print 'Japan is nowhere to be seen!'
sleep(10)
コメント内の URL は、レポートへのリンクを含むページです。レポートを手でクリックすると、レポートが機能します (XHP 経由)。ただし、スクリプトを使用して動作させることはできないようです。
br.load_jquery は常に None を返します。
リンクを手でクリックしたときのspynner デバッグ トレースの一部を追加しました: http://fpaste.org/97583/13987135/
私は何が欠けていますか?