2016-09-30 8 views
-2

複数のウェブサイトにフォームを提出したいと思います。通常、私はフォーム名やフォームIDを正確に知ることはできませんが、私が送信したい入力名を知っています。フォーム入力の名前に合わせて正しいフォームを選択してください

内部に2つのフォームがあるウェブサイトがあるとします。私のコードでは、すべてのフォームをチェックする必要があります。いずれかのフォームに "birthday"という名前の入力値がある場合は、そのフォームを送信します。複数の書式がある場合は、それらをすべて提出します。

どうすればこの問題を解決できますか?

答えて

1

あなたは、すべての形態より基本的にループができ、所望の入力を含まないフォームをスキップ:find_control()hereについて

for form in br.forms(): 
    if not form.find_control(name="birthday"): 
     continue 
    # fill form and submit here 

詳しいです。

+0

x = x + yに等しいので、どのように私は、フォームを選択することができますか? –

+0

@RobertZunrそれは私が言っていることです、それらのすべてを反復してフィルタリングします。 – alecxe

+0

「誕生日」の入力がないフォームをスキップしています。しかし、残りはどうでしょうか。 「誕生日」の値を送信するフォーム名を見つけるにはどうすればよいですか –

0

iteratorを使用して、ウェブサイトのすべてのフォームを確認する必要があります。この場合、forを使用します。しかしこれは私たちがどのような形で作業しているかを私たちに知らせません。したがって、新しい反復/ループが開始されたときにフォームを変更するときに、変数に0(最初のフォームのID)を割り当て、1を追加します。

currentForm = 0 
for form in br.forms(): # For every form in the website 
     currentForm += 1 # Add 1 to the current form so that the script knows which form we will be working next 
     if not forms.find_control(name = "birthday"): # If the form isn't about birthday 
       continue # Go to the next iteration/loop ignoring the statements below 
     br.select_form(nr = currentForm) # Select the birthday form 
     br.form["birthday"] = "Fill this with what you want" # Writing to the form 
     br.submit() # Submit the working form 

注:x += y私は、フォームの名前を知らないので、

関連する問題