Я пытаюсь автоматизировать вход на веб-сайт с помощью модуля mechanize
Python. Далее указан логин form
код:
<TD><B>Site:</B></TD>
<TD><SELECT name="site" class="drpdwn" size=1 width="200" onChange="populateZones(this, '');"><OPTION value="">Select a site</OPTION></SELECT>
<INPUT type="hidden" name="shortsite" size="3" value=""></TD>
</TR>
<TR>
<TD><B>Zone:</B></TD>
<TD><SELECT name="zone" class="drpdwn" size=1 width="100"><OPTION value="">Select a zone</OPTION></SELECT></TD>
</TR>
<TR>
<TD><B>User ID:</B></TD>
<TD><INPUT type="text" name="user" size=20 value=""></TD>
</TR>
<TR>
<TD><B>Password:</B></TD>
<TD><INPUT type="password" name="password" size=20></TD>
</TR>
<TR>
<TD> </TD>
<TD><INPUT name="submit1" type="submit" value="Log On" style="color: #003399; font-weight: bold; font-size: 10pt">
<input name="reset1" type="reset" value="Reset" style="color: #003399; font-weight: bold; font-size: 10pt" onClick="resetform();">
</TD>
Я могу проанализировать и заполнить user
, password
и shortsite
поля без каких-либо затруднений.Проблема возникает при заполнении раскрывающегося списка zone
.Как видно из приведенного выше HTML-кода, веб-страница использует функцию populateZones
javascript для заполнения зон.Я ищу способ принудительно установить значение зоны, хранящееся в файле конфигурации.В прошлом я делал подобные вещи, используя HTML::Form::ForceValue
. Есть ли какой-нибудь эквивалент в python?
Ниже приведен отрывок из скрипта python, над которым я работаю для автоматизации входа: <br>
<code>br['user'] = self.config['COMMON.USER']
br['password'] = self.config['COMMON.PASSWORD']
if 'COMMON.SITE' in self.config and 'COMMON.ZONE' in self.config:
try:
br.form.set_all_readonly(False)
br.form["shortsite"] = self.config['COMMON.SITE']
br.form.find_control(name="zone").set_value_by_label([self.config['COMMON.ZONE']])
except ControlNotFoundError, err:
logger = logging.getLogger(__name__)
logger.info(str(err))