Используйте getControl для управления объектами, отличными от имени переменной - PullRequest
1 голос
/ 28 января 2010

Я использую тестовый браузер Zope, который был рекомендован в моем последнем вопросе. Проблема, с которой я сталкиваюсь, заключается в том, что я могу использовать функцию getControl для управления различными объектами, такими как: пароль, имя пользователя и т. Д.

Я пытаюсь отправить страницу, чтобы перейти на следующую страницу, но кнопка отправки не имеет переменной name, только переменная id. «Отправить» записывается следующим образом:

<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')

Это выводит на экран ошибку, что 'id' недействителен:

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

Есть ли способ получить контроль над одним из других значений в 'submit'.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 28 января 2010

Я предполагаю, что по той или иной причине вы не можете добавить атрибут 'name' в свой тег, но если вы не можете добавить только 'name', вы можете явно установить 'value =Передайте '(вместо того, чтобы полагаться на значение по умолчанию, которое является Передать), и затем используйте browser.getControl (' Submit ')

Если это не так, вы можете сделать что-то вроде

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

Возможно, вы даже захотите расширить Browser.getControl () и добавить его обратно в zope.testbrowser.;)

...