Use getControl para controlar objetos diferentes da variável de nome
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.
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. ;)