Python wrapper para Xvfb

Si queremos usar Selenium en un servidor sin X-Window necesitamos usar Xvfb para que pueda usar el driver que sea (Firefox en mi caso)

No conseguí que Firefox usara Xvfb hasta que encontré PyVirtualDisplay. Para instalarlo hay que usar pip: pip install pyvirtualdisplay

Este es un ejemplo de uso de PyVirtualDisplay y Selenium:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

Fuente: http://coreygoldberg.blogspot.com.es/2011/06/python-headless-selenium-webdriver.html

pip uninstall no desinstala

Instalé el paquete de Debian Wheezy python-pip hace tiempo. Lo usaba para instalar y desinstalar cosas hasta que me di cuenta de que pip uninstall no desinstalaba lo que le indicaba.

Buscando llegué a este bug, que es exactamente lo que me pasaba. Ahí viene la solución para instalar pip desde su repositorio:

aptitude install python-setuptools
wget -O - https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

En Debian también hay un bug, que dice que falla sólo si no usas pip en un virtualenv.

Habilitar HTTPS en web2py

web2py por defecto sólo deja acceder a la sección admin si se conecta desde la misma máquina, si no dará el error «admin is disabled because insecure channel» Para conectar de forma remota, hay que habilitar el HTTPS o un túnel SSH. Aquí explicaré como habilitar el HTTPS.

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Ahora podemos lanzar el servidor con python web2py.py -c server.crt -k server.key y acceder mediante https://

Fuente: http://www.web2py.com/AlterEgo/default/show/140