Tive este problema inicialmente com o Capybara (Ruby) e uma boa alma já havia postado a solução, reproduzida abaixo, que utiliza a API do Capybara para definir a variável
network.manage-offline-status
, a tal "variável oculta" que citei no parágrafo 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
end
end
Para aplicações Python, há até pouco tempo não tínhamos algo como o Capybara, até 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 já é um ótimo substituto para boa parte das tarefas do dia-a-dia de quem escreve testes de aceitação. Porém, o Splinter não 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 FirefoxProfile
prefs = FirefoxProfile._get_webdriver_prefs()
prefs['network.manage-offline-status'] = 'false'
@staticmethod
def prefs_func():
return prefs
FirefoxProfile._get_webdriver_prefs = prefs_func
Por sinal, o Splinter é um projeto muito legal, vale a pena dar uma olhada e ajudar, nem que seja só 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 nível mostrado aqui.
4 comentários:
RÁ! :)
Resolveu meu problema que me impedia de hackear o splinter no meu notebook, apesar de eu também me meter a besta no cobrateam.
No meu caso, acontece que eu não me conecto à internet utilizando o network-manager, mas sim um gerenciador da minha placa wireless, desta forma, mesmo conectado à internet, o Firefox "acha" que estou offline e sempre inicia em modo offline, um saco! x)
Mas agora tudo funcionará, obrigado e parabéns =P
Muito bom saber que a parada foi útil pra mais alguém. Bons hacks aí no Splinter!
Apenas para ficar registrado, na versão do Selenium que está no SVN, há um dicionário "prefs" na classe FirefoxProfile, então fica menos feio:
FirefoxProfile.prefs["network.manage-offline-status"] = "false"
:)
Assim fica muito melhor! Quando sair uma versão disso aí eu faço um update declarando a obsolescência do post.
Valeu o registro!
Postar um comentário