Verwenden Sie Mechanisieren, um Formular ohne Kontrollturnier einzureichen

Ich versuche zu verwenden Mechanisieren für Python, um ein Formular einzureichen, aber die Formularsteuerung, die ich ausfüllen muss, hat keinen Namen, der ihm zugeordnet ist.

<POST https://sample.com/anExample multipart/form-data <HiddenControl(post_authenticity_token=) (readonly)> <HiddenControl(iframe_callback=) (readonly)> <TextareaControl(<None>=)>> 

Die Kontrolle, die ich bearbeite, ist die letzte Steuerung im obigen Objekt, <TextareaControl(<None>=)> .

  • Python mechanisieren, nach Link von url und was ist der nr Parameter?
  • Wie mache ich Mechanisiere warten auf Web-Seite 'volle' Last?
  • Sind Cookies in einem Mechanize Browser zwischen öffnen URLs gehalten?
  • Set Mechanize, um Cookies zu akzeptieren
  • Mit Mechanisieren auf eine Webseite anmelden
  • Python-Browser-Emulator mit JS-Unterstützung
  • Ich habe mir die Dokumentation angesehen und kann nicht scheinen, einen Weg zu finden, einen Wert zu diesem Steuerelement zuzuweisen, da es keinen Namen hat, der mit ihm verbunden ist.

      forms = [f for f in br.forms()] print forms[2].controls[5].name 

    Ausgänge "Keine"

  • Zeilenanzahl in einer CSV-Datei
  • (Python) Stuck auf Skipping-Bereich Werte für die Summe einer Randzahl-Liste
  • Wie benutzt man einen Dezimalbereich () Schrittwert?
  • Schreiben Sie, um Zeilen mit einer bestimmten Anzahl von Spalten aufzulisten
  • Generiere N positive ganze Zahlen innerhalb eines Bereichs, der bis zu einer Gesamtmenge in Python addiert
  • Pandas: Neue Spalte in df mit zufälligen Ganzzahlen aus Reichweite erstellen
  • One Solution collect form web for “Verwenden Sie Mechanisieren, um Formular ohne Kontrollturnier einzureichen”

    Also, ich gebe dir, dieser war ziemlich hart, um herauszufinden. Hatte buchstäblich einen Blick auf den mechanize selbst, um herauszufinden. Leider konnte ich es nicht sicher auf einem tatsächlichen Formulareinzelteil ohne Namensattribut testen, obwohl ich das tun kann, wenn du die Seite verstellst, die du zu ziehen suchst, oder du kannst es selbst machen.

    Die Formgegenstände ehrlich sind nicht so gut für die Usability implementiert. Der einzige Weg, den ich für Sie sehen kann, bearbeitet den Wert eines namenlosen Formulars, indem er die Methode set_value des Formulars verwendet :

     class HTMLForm: # <...> set_value(value, name=None, type=None, kind=None, id=None, nr=None, by_label=False, # by_label is deprecated label=None) 

    Also, was Sie hier tun, um die Kontrolle, die Sie suchen, ist mit dem nr Argument zu greifen, mit dem Index der Kontrolle in der Form. Leider kannst du keine negativen Ganzzahlen verwenden, um Kontrollen von hinten zu greifen, also um die letzte Form zu nr=len(myform.controls)-1 musst du etwas in der Linie von nr=len(myform.controls)-1 .

    In jedem Fall, was Sie hier tun können, ist Gebrauch, dass set_value Methode, und Sie sollten als solche gesetzt werden:

     forms[2].set_value("LOOK!!!! I SET THE VALUE OF THIS UNNAMED CONTROL!", nr=5) 

    Und das sollte für dich arbeiten Lass mich wissen, wie es geht

    Python ist die beste Programmiersprache der Welt.