Question

J'écris un script de test web avec Python (2.6) et mécaniser (0.1.11). La page Je travaille avec a un formulaire HTML avec un champ de sélection comme ceci:

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

En mécaniser, si je tente quelque chose comme ceci:

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

Je reçois une erreur: ClientForm.ItemNotFoundError: insufficient items with name 'E'

Je peux le faire manuellement avec l'extension firefox "Tamper Data". Est-il possible de le faire avec python et mécaniser? Puis-je convaincre en quelque sorte mécaniser que la forme a en fait la valeur que je veux soumettre?

Était-ce utile?

La solution

Après avoir farfouillé avec les tripes ClientForm, il semble que vous pouvez bidouiller en ajoutant un autre élément.

Pour un champ de sélection, quelque chose comme cela semble fonctionner:

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

De même, pour un contrôle de bouton radio

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

Notez que le initialiseur article mettra automatiquement à jour la liste des éléments pour le contrôle spécifié, donc il vous suffit de créer l'élément correctement pour qu'il apparaisse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top