问题
I am struggling to check a simple checkbox with robobrowser
to discard all messages in mailman.
form['discardalldefersp'].options
returns ['0']
, neither
form['discardalldefersp'].value= True
nor
form['discardalldefersp'].value = '1'
delivers a result. I only get 'ValueError: Option 1 not found in field '
How can I set the checkbox?
My code for the whole thing is as following:
import robobrowser
pw = '<password>'
browser = RoboBrowser(history=True)
browser.open('<mailmanlist>')
form = browser.get_form(action='/mailman/admindb/<listname>')
form['adminpw'].value = pw
browser.submit_form(form)
form = browser.get_form(action='<listurl>')
form['discardalldefersp'].value = '1'
The HTML is the following (in German):
<HTML>
<HEAD>
<LINK REL="SHORTCUT ICON" HREF="/images/mailman/mm-icon.png">
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Administrative Datenbank</TITLE>
</HEAD>
<BODY bgcolor="white"
dir="ltr">
<h2>Administrative Anfragen für Liste: <em>foobar</em></h2><!-- based on en 2.0 / StD-->
Diese Seite zeigt eine Übersicht der gegenwärtigen administrativen
Anfragen für die <a href="https://lists.server.de/mailman/admin/foobar"><em>foobar</em>
Mailingliste</a>, die auf Ihre Genehmigung warten. Als erstes sehen Sie eine
Liste allfälliger Abonnement- und Kündigungsanfragen, gefolgt von
eventuellen Nachrichten, die Ihre Genehmigung erfordern, und daher gestoppt
wurden.
<p>Bitte wählen Sie für jede Anfrage die zu treffende Maßnahme
aus, und klicken Sie auf den <b>Alle Daten senden</b> Knopf, wenn sie fertig
sind. Eine <a href="https://lists.server.de/mailman/admindb/foobar?details=instructions">detaillierte Anleitung</a> ist ebenfalls
verfügbar.
<p>Sie können sich auch <a href="https://lists.server.de/mailman/admindb/foobar?details=all">Details</a> zu allen
gestoppten Nachrichten anzeigen lassen.
<FORM action="https://lists.server.de/mailman/admindb/foobar" method="POST" >
<center>
<INPUT name="submit" type="SUBMIT" value="Alle Daten senden" ></center>
<center>
<INPUT name="discardalldefersp" type="CHECKBOX" value="0" > Alle mit <em>Verschieben</em> markierten Nachrichten verwerfen.
</center>
<hr>
<center>
<h2>Zurückgehaltene Nachrichten</h2></center>
...
</FORM>
回答1:
I had a similar error message with a radio button. Try to add the option of '1' or True to the Robobrowser field discardalldefersp and see if it solves the problem:
form['discardalldefersp'].options = ['1']
form['discardalldefersp'].value = '1'
Or with the True option:
form['discardalldefersp'].options = [True]
form['discardalldefersp'].value = True
That solved me of getting the error message but the form didn't work well, but I think it was the web site that wasn't working good.
来源:https://stackoverflow.com/questions/39547879/setting-a-plain-checkbox-with-robobrowser