استخدم GetControl للتحكم في الكائنات بخلاف متغير الاسم

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

سؤال

أنا أستخدم Zope Testbrowser الذي أوصى به في سؤالي الأخير. المشكلة التي أواجهها هي أنه يمكنني استخدام وظيفة getControl للتحكم في كائنات مختلفة مثل: كلمة المرور ، اسم المستخدم ، إلخ.

أحاول إرسال الصفحة للوصول إلى الصفحة التالية ولكن زر الإرسال لا يحتوي على متغير "اسم" ، مجرد متغير "معرف". "إرسال" مكتوب على النحو التالي:

<input type="submit" id="lgn_button" class="button" tabindex="3" accesskey="s" />

والكائنات الأخرى مكتوبة على النحو التالي:

<input type="password" class="button" name="password" id="password" size="24" maxlength="20" accesskey="p" tabindex="2" value=""/></td>

ليس لدي وصول لتغيير هذا. رمز Python Zope الذي أستخدمه للحصول على التحكم في كائن "كلمة المرور" هو:

browser.getControl(name='password')

لا يحتوي زر الإرسال على "اسم" لذلك كتبت:

browser.getControl(id='lgn_button')

هذا يطبع الخطأ بأن "المعرف" غير صالح:

TypeError: getControl() got an unexpected keyword argument 'id'

هل هناك أي طريقة للسيطرة على إحدى القيم الأخرى في "إرسال".

شكرا على اي مساعدة.

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

المحلول

أفترض أنه ، لسبب أو لآخر ، لا يمكنك إضافة سمة "اسم" إلى العلامة الخاصة بك ، ولكن إذا كان اسم "اسم" فقط لا يمكنك إضافته ، فيمكنك تعيين "قيمة = إرسال" (إرسال "بشكل صريح ( بدلاً من الاعتماد على واحد افتراضي ، والذي يتم إرساله) ثم استخدم Browser.getControl ('إرسال')

إذا فشل ذلك ، يمكنك أن تفعل شيئًا على غرار

for form in browser.mech_browser.forms():
    for control in form.controls:
        if control.id == 'lgn_button':
            return control

قد ترغب حتى في تمديد المتصفح. ؛)

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