Estoy intentando usar mechanize (v0.2.5) para trabajar con un formulario en una página que tiene una imagen desactivada como uno de los elementos del formulario. Cuando trato de seleccionar el formulario, mechanize plantea un AttributeError: control 'test' is disabled
donde test
es el nombre del control deshabilitado. Por ejemplo,mecanizar no puede leer el formulario con SubmitControl que está deshabilitado y no tiene ningún valor
br = mechanize.Browser(factory=mechanize.RobustFactory())
br.open("http://whatever...")
br.select_form(nr=0)
conduce a esta Seguimiento de la pila:
br.select_form(nr=0)
File "build\bdist.win32\egg\mechanize\_mechanize.py", line 499, in select_form
File "build\bdist.win32\egg\mechanize\_html.py", line 544, in __getattr__
File "build\bdist.win32\egg\mechanize\_html.py", line 557, in forms
File "build\bdist.win32\egg\mechanize\_html.py", line 237, in forms
File "build\bdist.win32\egg\mechanize\_form.py", line 844, in ParseResponseEx
File "build\bdist.win32\egg\mechanize\_form.py", line 1017, in _ParseFileEx
File "build\bdist.win32\egg\mechanize\_form.py", line 2735, in new_control
File "build\bdist.win32\egg\mechanize\_form.py", line 2336, in __init__
File "build\bdist.win32\egg\mechanize\_form.py", line 1221, in __setattr__
AttributeError: control 'test' is disabled
Evaluación del código fuente mecanizar, parece como si siempre se elevará este error cuando no hay ningún elemento de la forma que se evalúa como un mechanize.SubmitControl
y que no tiene un atributo predefinido value
. Por ejemplo, la siguiente forma aumentaría el mismo error:
<form action="http://whatever" method="POST">
<input name="test" type="submit" disabled="disabled" />
</form>
No estoy seguro de si esto debería contar como un insecto, pero en cualquier caso es que hay alguna solución? Por ejemplo, ¿hay alguna manera de modificar el código HTML de la página de destino para habilitar los controles deshabilitados antes de llamar al br.select_form()
?
EDITAR
He presentado un parche para mecanizar que soluciona este problema.
¡Gracias! Esto fue un salvavidas. Para cualquier persona que tenga problemas parcheando esto, Repo está aquí: [https://github.com/abielr/mechanize](https://github.com/abielr/mechanize), descargue el código fuente de origen y luego use '$ python setup. py install' Espero que traigan su solución en la próxima versión :-) – aknatn