3

Python (2.6) と mechanize (0.1.11) を使用して Web テスト スクリプトを作成しています。私が扱っているページには、次のような選択フィールドを持つ html フォームがあります。

<select name="field1" size="1">
    <option value="A" selected>A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select>

機械化で、次のようなことを試してみると:

browser.form['field1'] = ['E']

次に、エラーが発生します。ClientForm.ItemNotFoundError: insufficient items with name 'E'

「改ざんデータ」Firefox拡張機能を使用して、これを手動で行うことができます。Pythonと機械化でこれを行う方法はありますか? フォームに実際に送信したい値があることを機械化することをどうにかして納得させることはできますか?

4

1 に答える 1

7

ClientForm の中身をいじってみると、それをだまして別のアイテムを追加できるようです。

選択フィールドの場合、次のようなものが機能するようです:

xitem = ClientForm.Item(browser.form.find_control(name="field1"), 
        {'contents':'E', 'value':'E', 'label':'E'})

同様に、ラジオ ボタン コントロールの場合

xitem = ClientForm.Item(browser.form.find_control(name="field2"),
        {'type':'radio', 'name':'field2', 'value':'X'})

Item イニシャライザは、指定されたコントロールの項目のリストを自動的に更新するため、項目を適切に作成するだけで表示されることに注意してください。

于 2009-08-17T03:33:46.853 に答える