Domanda

Sto usando il testbrowser Zope, che è stato raccomandato nella mia ultima domanda. Il problema che sto affrontando è che posso utilizzare la funzione getControl per controllare gli oggetti diversi, come:. La password, nome utente ecc

Sto cercando di inviare la pagina per arrivare alla pagina successiva, ma il pulsante non ha alcun presentare variabile 'name', solo una variabile 'id'. 'Invia' è scritto come segue:

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

e gli altri oggetti sono scritte come:

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

Non ho accesso a cambiare questo. Il codice python zope Sto usando per ottenere il controllo dell'oggetto 'password' è:

browser.getControl(name='password')

Il pulsante di invio non ha 'nome' così che ho scritto:

browser.getControl(id='lgn_button')

Questo stampa l'errore che 'id' non è valido:

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

C'è un modo per ottenere il controllo di uno degli altri valori in 'Invia'.

Grazie per qualsiasi aiuto.

È stato utile?

Soluzione

Suppongo che, per un motivo o un altro, non è possibile aggiungere un 'nome' attributo al tag, ma se è solo un 'nome' che non è possibile aggiungere, è possibile impostare in modo esplicito un 'value = Invia'(invece di basarsi su quella di default, che è submit) e quindi usare browser.getControl ( 'Invia')

In mancanza di questo, si può fare qualcosa sulla falsariga di

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

Si potrebbe anche voler estendere Browser.getControl () con quella e contribuire di nuovo a zope.testbrowser. ;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top