O Firefox tem um curioso "recurso" que consiste em colocar o browser em modo "offline" quando o computador se desconecta da rede. Isto se torna um pequeno estorvo quando, por exemplo, se esta fora da rede e acessando uma aplicacao web local e acaba sendo necessario desmarcar a opcao "Work offline". Enfim, todo mundo que usa Firefox e desenvolve para a web ja deve ter passado por isto. Ate ai, nada demais. O "pequeno estorvo", porem, torna-se um problema real quando se utiliza Selenium com Firefox com o computador desconectado. Aparentemente, isto aqui resolve o problema, que tambem e possivel de ser resolvido manualmente a partir da versao 3.6 do Firefox setando uma variavel oculta no Firefox, mas acabaria caindo no antipadrao "works-on-my-machine", pois apenas o meu Firefox funcionaria offline, quando o correto seria que qualquer maquina que rodasse as specs do projeto pudesse faze-lo sem atropelos.Tive este problema inicialmente com o Capybara (Ruby) e uma boa alma ja havia postado a solucao, reproduzida abaixo, que utiliza a API do Capybara para definir a variavel network.manage-offline-status, a tal "variavel oculta" que citei no paragrafo anterior.class Capybara::Driver::Selenium def self.driver unless @driver profile = Selenium::WebDriver::Firefox::Profile.new profile['network.manage-offline-status'] = false @driver = Selenium::WebDriver.for :firefox, :profile => profile at_exit do @driver.quit end end @driver endendPara aplicacoes Python, ha ate pouco tempo nao tinhamos algo como o Capybara, ate que outro grupo de boas almas, o Cobrateam, formado pelos ex-colegas de NSI Hugo Lopes e Gustavo Rezende e mais alguns membros da Globo.com, decidiram fazer algo semelhamnte para Python, o Splinter. Apesar de ser um projeto bastante recente, o Splinter ja e um otimo substituto para boa parte das tarefas do dia-a-dia de quem escreve testes de aceitacao. Porem, o Splinter nao possui uma API para acessar detalhes e/ou configurar o browser utilizado. Assim, consegui resolver o problema fazendo um hack no Selenium.from selenium.firefox.firefox_profile import FirefoxProfileprefs = FirefoxProfile._get_webdriver_prefs()prefs['network.manage-offline-status'] = 'false'@staticmethoddef prefs_func(): return prefsFirefoxProfile._get_webdriver_prefs = prefs_funcPor sinal, o Splinter e um projeto muito legal, vale a pena dar uma olhada e ajudar, nem que seja so falando bem dele no seu blog, como eu fiz aqui :P Give back to open-source!Update (05/01/2011, 13h50m): Francisco Souza abriu um issue no Splinter para uma API que possibilite customizar o perfil do Firefox no Webdriver, evitando - do ponto de vista do cliente do Splinter - o tipo de acesso de baixo nivel mostrado aqui. Esta semana que se inicia neste domingo vai ser pequena pra tanto evento aqui na terra plana.Explico: teremos, de terca a quinta (9 a 11/11), o 6o Circuito de Tecnologia da Informacao do IFF (Instituto Federal Fluminense). O evento esta dividido em minicursos pela manha, workshops academicos a tarde e palestras a noite. Eu vou ministrar um minicurso de Ruby on Rails de terca a quinta (dividido em Ruby, Rails e BDD) e vou participar de um debate agilismo x engenharia de software tradicional na terca-feira as 17 horas. As palestras prometem ser de altissimo nivel, confira a programacao.Na sexta-feira (12/11), temos a PythOnCampus IFF, evento que estou organizando junto com os colegas do NSI, um evento