Pregunta

Estoy utilizando el testbrowser Zope que ha sido recomendado en mi última pregunta. El problema que estoy enfrentando es que puedo utilizar la función getControl para controlar diferentes objetos como:. Contraseña, nombre de usuario, etc.

Estoy intentando enviar la página para llegar a la siguiente página, pero el botón de envío tiene ninguna variable 'nombre', solo una variable 'id'. 'Enviar' se escribe de la siguiente manera:

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

y los demás objetos se escriben como:

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

no tengo acceso a cambiar esto. El código python zope que estoy utilizando para hacerse con el control del objeto 'password' es:

browser.getControl(name='password')

El botón de envío no tiene 'nombre' por lo que he escrito:

browser.getControl(id='lgn_button')

Esto muestra que el error 'id' no es válido:

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

¿Hay alguna manera de obtener el control de uno de los otros valores en 'enviar'.

Gracias por cualquier ayuda.

¿Fue útil?

Solución

Asumo que, por una razón u otra, no se puede añadir un atributo 'nombre' a su etiqueta, pero si es sólo un 'nombre' que no se puede añadir, se puede establecer de manera explícita a '= valor Enviar'(en lugar de confiar en el valor predeterminado, que es enviar) y luego usar browser.getControl ( 'Enviar')

De no ser así, se puede hacer algo en la línea de

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

Incluso podría querer extender Browser.getControl () con eso y contribuir de nuevo a zope.testbrowser. ;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top