كيفية إرسال نموذج بأكثر من 1 إرسال زر. إرسال وظيفة إلى موقع على شبكة الإنترنت. (بيثون)

StackOverflow https://stackoverflow.com/questions/1830413

سؤال

أنا خلق نصي باستخدام ميكانيكية بيثون يمكن أن تسجيل الدخول إلى موقع ويب وتقديم نموذج. ومع ذلك، يحتوي هذا النموذج على 3 أزرار (المعاينة والبريد والإلغاء). اعتدت على زر واحد فقط ...

هذا هو النموذج:

<TextControl(subject=Is this good for the holidays? Anyone know about the new tech?)>
  <IgnoreControl(threads=<None>)>
  <TextareaControl(message=Im new to technology stocks.)>
  <SelectControl(identity=[*annamae41g])>
  <RadioControl(E=[5, 4, *3, 2, 1, 0])>
  <SubmitControl(SubmitPreview=Preview Message) (readonly)>
  <SubmitControl(SubmitPost=Post Message) (readonly)>
  <SubmitControl(SubmitCancel=Cancel) (readonly)>
  <HiddenControl(action_btn=) (readonly)>
  <HiddenControl(_charset_=) (readonly)>
  <HiddenControl(.crumb=4DxnFEwMIGG) (readonly)>
  <HiddenControl(r=/Stocks_(A_to_Z)/Stocks_G) (readonly)>
  <HiddenControl(bn=25263) (readonly)>
  <HiddenControl(<None>=annamae41g) (readonly)>>

وهذا هو رمز بلدي:

br.open(newtopic_url)
br.select_form(name="postmsg")
br.form['subject'] = "Is this good for the holidays? Anyone know about the new tech?"
br.form['message'] = "Im new to technology stocks."
br.form['E'] = ['3']
br.form['identity'] = ['annamae41g']
print br.form
br.submit()

إذا قمت بتشغيل هذا البرنامج النصي ... لن يعمل. لا شيء يحدث. أفترض أنه يحتوي على 3 أزرار تقدم في النموذج؟ أم أنها مشكلة أخرى؟

هل كانت مفيدة؟

المحلول 2

تم حل المشكلة.

لا تستخدم ميكانيكية بيثون. لن يسمح لك بإرسال بيانات آخر أخرى.

لسبب ما، فإن بيانات النشر الموجودة حاليا في السؤال غير كافية. هناك أشياء أخرى تحتاج إلى إرسالها إلى الخادم.

لذلك، يجب عليك استخدام طريقة Opener / Cookiejar العادية لإرسال جميع البيانات من خلالها. حصلت على البيانات الإضافية (إلى جانب الموضوع، الرسالة، E، الهوية) من Firebug (النظر إلى الشبكة)

نصائح أخرى

واجهة نفس مشكلتك.

نموذج مع اثنين من أزرار تقديم، أولا كان المعاينة، الثانية كان تقديم.

في البداية، كان ميكانيكي يستخدم الزر الأول فقط، يمكنني أن أرى إجابة الخادم باستخدام

response = browser.submit()
print response.read()

أضع اسم زر إرسال كمعلمة إلى وظيفة إرسال ميكانيكية، وقد عملت!

response = browser.submit("submit")

اختبارها، يجب أن تعمل من أجلك أيضا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top