2009-08-17 12 views
3

私はPython(2.6)と機械化(0.1.11)でWebテストスクリプトを作成しています。私が働いているページでは、このような選択フィールドを持つHTMLフォームがあります:MechanizeのでPythonの使用「改ざんデータ」のような機械化

<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'

"Tamper Data" firefox拡張機能を使ってこれを手動で行うことができます。 Pythonでこれを行い機械化する方法はありますか?どういうわけか、フォームに実際に提出したい値があることを機械化して納得させることはできますか?

+0

あなたが指定した例では、*に値 'E'はありません。 – kajaco

+0

それは要点ですが、それはリストされたオプションの1つではありませんが、 'E'を提出することを騙したいと思います。 – phicou

答えて

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'}) 

注意:選択フィールドの場合

は、このような何かが動作しているようです指定されたコントロールが表示されるようにアイテムを正しく作成する必要があります。

関連する問題