Pergunta

Estou usando o zope testbrowser que foi recomendado em minha última pergunta. O problema que estou enfrentando é que posso usar a função GetControl para controlar diferentes objetos como: senha, nome de usuário etc.

Estou tentando enviar a página para chegar à próxima página, mas o botão Enviar não possui variável 'nome', apenas uma variável 'id'. 'Submit' está escrito da seguinte forma:

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

e os outros objetos são escritos como:

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

Não tenho acesso para mudar isso. O código Python Zope que estou usando para obter o controle do objeto 'Senha' é:

browser.getControl(name='password')

O botão Enviar não tem 'nome', então eu escrevi:

browser.getControl(id='lgn_button')

Isso imprime o erro de que 'ID' é inválido:

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

Existe alguma maneira de obter o controle de um dos outros valores em 'submeter'.

Obrigado por qualquer ajuda.

Foi útil?

Solução

Presumo que, por um motivo ou outro, você não pode adicionar um atributo 'nome' à sua tag, mas se for apenas um 'nome' que você não pode adicionar, pode definir explicitamente um 'value = submeter' ( Em vez de confiar no padrão, que é enviado) e use o navegador.getControl ('submeter')

Falha nisso, você pode fazer algo parecido com

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

Você pode até querer estender o navegador.getControl () com isso e contribuí -lo de volta para o zope.testBrowser. ;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top