Nous avons un formulaire avec quelques boutons d'envoi séparés qui effectuent des actions différentes. Le problème est que j'ai deux ou trois boutons qui ont le code HTML suivant:Mechanize submit
<input type="submit" name="submit" value="Submit" class="submitLink" title="Submit" />
<input type="submit" name="submit" value="Delete" class="submitLink" title="Delete" />
Maintenant, vous ne trouvez pas un élément en valeur avec la fonction standard de find_control. J'ai donc écrit une fonction sous-jacente qui trouverait mon élément, que je puis espère cliquer la manière suivante:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)
Toutefois, les deux soumettre et cliquez sur appel interne élément trouver, et aucune méthode ne vous permet d'ajouter dans la mot-clé de prédicat, donc un appel comme celui-ci ne fonctionne pas non plus:
self.br.submit(predicate=submit_button_finder)
Y at-il quelque chose qui me manque?!?
Mise à jour:
Ajouté Une fonction d'assistance pour récupérer tous les éléments qui répondent aux critères tels:
def find_controls(self, name=None, type=None, kind=None, id=None, predicate=None, label=None):
i = 0
results = []
try :
while(True):
results.append(self.browswer.find_control(name, type, kind, id, predicate, label, nr=i))
i += 1
except Exception as e: #Exception tossed if control not found
pass
return results
ensuite remplacé les lignes suivantes:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)
Avec:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
submit_buttons = self.find_controls(type="submit")
for button in submit_buttons[:]:
if (button != submit_button) : self.br.form.controls.remove(button)
self.br.submit()
Je suis sûr que vous ne devriez pas avoir deux boutons avec le même nom sur une page. Cela pourrait faire partie de votre problème. –
@Alex Malheureusement, je n'ai aucun contrôle sur cela. – Scott