1

以前にこれと同様の問題がありましたが、チェックボックスをクリックできない理由がわかりません。チェックボックスを間違った方法で選択して、チェックボックスをチェックするエラーを起こしていると思います。

これが私のトレースバックです:

Traceback (most recent call last):
  File "C:\Python27\Sample Programs\Spynner Basic.py", line 19, in <module>
    br.check('input[name="AdvSearchView$SRView$_resultGrid$ctl01$chk"]')
  File "C:\Python27\lib\site-packages\spynner\browser.py", line 846, in check
    self._runjs_on_jquery("check", jscode)
  File "C:\Python27\lib\site-packages\spynner\browser.py", line 394, in _runjs_on_jquery
    raise SpynnerJavascriptError("error on %s: %s" % (name, code))
SpynnerJavascriptError: error on check: jq('input[name="AdvSearchView$SRView$_resultGrid$ctl01$chk"]').attr('checked', true)

HTML/CSS セクションは次のとおりです。

<tr>
<td align="left" style="width: 100%; vertical-align: top; background-color: #ffffff; height: 100%">
<table id="AdvSearchView_SRView__resultGrid" cellspacing="0" border="0" style="border-width:0px;width:100%;border-collapse:collapse;" rules="cols">
<tbody>
<tr class="columnheader">
<td align="center" style="width:20px;FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;">
<span title="Select/Deselect All">
<input id="AdvSearchView_SRView__resultGrid_ctl01_chk" type="checkbox" onclick="javascript:ResultGrid.checkUncheckAll('AdvSearchView_SRView__resultGrid', this);"     name="AdvSearchView$SRView$_resultGrid$ctl01$chk"> # THIS IS THE IMPORTANT PART I THINK
</span>
</td>
<td align="center" style="width:25px;FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;">Type</td>
<td align="left" style="FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;WHITE-SPACE:NOWRAP;">
<a href="javascript:callback.doCallback('AdvSearchView$SRView$_sortingHeaders','DisplayTicker',null);">Ticker</a>
</td>
<td align="center" style="FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;WHITE-SPACE:NOWRAP;">
<a href="javascript:callback.doCallback('AdvSearchView$SRView$_sortingHeaders','Date',null);">Date</a>
<img style="border-width:0px;" src="/thomson_financial_research_web_ui/3_19/Images/sort_desc.jpg">
</td>
<td align="left" style="FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;">
<a href="javascript:callback.doCallback('AdvSearchView$SRView$_sortingHeaders','Title',null);">Headline    </a>
</td>
<td align="right" style="FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;">
<a href="javascript:callback.doCallback('AdvSearchView$SRView$_sortingHeaders','Pages',null);">Pgs</a>
</td>
<td align="left" style="width:180px;FONT-SIZE:70%;BORDER-BOTTOM:solid 1px;PADDING-BOTTOM:3px;">
<a href="javascript:callback.doCallback('AdvSearchView$SRView$_sortingHeaders','Contributor',null);">Contributor</a>
</td>
</tr>

そして、ここに私のPythonコードがあります:

from __future__ import division
from __future__ import unicode_literals
from __future__ import print_function
import re
import spynner
from BeautifulSoup import BeautifulSoup
import time
br = spynner.Browser()
br.create_webview()
br.show()
br.set_html_parser("BeautifulSoup")
br.load("https://www.thomsononeim.com/s-log_in.asp")
br.fill("input[name=txtLoginID]", "username")
br.fill("input[name=txtPWD]", "password")
br.click("input[name=Submit]", wait_load=True)
br.click("input[name=Market]", wait_load=True)
br.select('option[value="IBESNA~US"]')
br.click("#MktGoImg", wait_load=True)
br.check('input[name="AdvSearchView$SRView$_resultGrid$ctl01$chk"]')
br.browse()
br.close()
4

2 に答える 2

0

これは、セレクターの名前が間違っていることに関係していると思います。

于 2011-05-30T02:31:04.747 に答える
0

間違っているかもしれませんが、これは実際のバグだと思います。キオルキーに報告するべきです。あなたの html をローカル ドキュメントにコピーし、コード (およびそのバリエーション) を実行しました。

デバッグをオンにすると、次のように表示されます。

Javascript console (undefined:1): ReferenceError: Can't find variable: jq
Javascript console (undefined:1): ReferenceError: Can't find variable: jq

これはまったく意味がありません。これは spynner で定義された変数ですが、なぜ存在しないのでしょうか?

試してみると:

browser.load('http://www.lehigh.edu/~inwww/form-test.html')
browser.uncheck('input[type=checkbox]')
browser.check('input[type=checkbox]')

それはうまく機能します。

デバッグ情報をさらに取得するには、次のようにします。

browser.debug_level = spynner.INFO

あなたが持っているデバッグレベルの他のオプションについては、APIまたはソースを確認してください。私は真実からかけ離れているかもしれないので、他の誰かがこれに光を当てることができるでしょうか?

編集:

これをソース html ソースに追加すると、次のようになります。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

できます。jquery が適切に注入されていないようです (ドキュメントによれば、そうあるべきです)。

于 2011-06-04T18:03:28.427 に答える