2016-08-26 7 views
1

Ich benutze watir webdriver und seine kopflose Funktionalität zusammen mit Firefox-Browser zu einer Website gehen, sagen www.xyz.com. Klicken Sie auf verschiedene Schaltflächen und laden Sie ein pdf.Ich habe dies in meiner lokalen Umgebung erreicht.Wenn Ich schiebe meine App zu Heroku, bat um buildpacks.Ich habe buildpacks hinzugefügt und sie sind in meinem heroku vorhanden. Ich habe dies gefunden, indem ich heroku run bash ausgeführt habe. Abhängigkeiten verwendet werden:Wie kann ich firefox auf heroku verwenden

gem 'watir-webdriver', '~> 0.9.1' 
gem 'headless', '~> 2.2', '>= 2.2.3' 
Buildpack of Xvfb 
Buildpack of firefox 

Xvfb buildpack fine.When arbeitet browser = Watir::Browser.new(:firefox, :profile => profile) läuft, bin ich immer seltsame Fehler wie Selenium::WebDriver::Error::WebDriverError: unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) oder set path for firefox. Ich habe Pfad für firefox gesetzt Selenium::WebDriver::Firefox::Binary.path='vendor/firefox/firefox-bin' . Ich kann das Firefox an diesem Ort in meinem heroku bash installiert sehen. Ich bin nicht sicher, ob dies ein Heroku Problem oder Buildpack Problem ist. Obwohl der Entwickler von buildpack sagte, er war nicht in der Lage, seine firefox buildpack auf Heroku zu laufen, aber er war in der Lage zu Amazon EC2 .Is ist möglich zu installieren und Firefox mit allen zu verwenden seine Funktionen (wie Öffnen und Schließen des Browsers, Herunterladen von PDF, Öffnen von Tabs) auf Heroku? Es tut mir leid, wenn ich mit meiner Frage nicht so klar bin. Firefox Buildpack.

begin 
    ActiveRecord::Base.transaction do 
    download_directory = "#{Rails.root}/tmp/#{dir_name}" 

    Selenium::WebDriver::Firefox::Binary.path='vendor/firefox/firefox-bin' 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile['download.prompt_for_download'] = false 
    profile['browser.download.folderList'] = 2 # custom location 
    profile['browser.download.dir'] = download_directory 
    profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf" 
    # Disable built-in pdf viewer of Firefox browser 
    profile['pdfjs.disabled'] = true 
    profile['pdfjs.firstRun'] = false 

    headless = Headless.new 
    headless.start 

    browser = Watir::Browser.new(:firefox, :profile => profile) 
    # browser.screenshot.save "pp.png" 
    browser.goto 'xyz.com' 
    browser.window.resize_to(some_x,some_y) 
    browser.text_field(:name => "some_name").set("#{some_data}") 
    browser.text_field(:name => "some_password").set("#{password}") 
    browser.button(:name => "button").click 
    #Pdf gets downloaded in the defined location 
    #some database updations 
    headless.destroy 
    end 
rescue => r 
end 

Antwort

1

Sie können Firefox nicht als Headless-Browser auf Heroku verwenden. Heroku unterstützt diese Funktionalität nicht. Sie können einen JavaScript-Browser wie Phantom js verwenden.

Sie können buildpack für pantom js auf heroku konfigurieren. Sie müssen einige Änderungen am Code vornehmen, wie:

Selenium::WebDriver::PhantomJS.path = 'path_to_phantomjs' 
client = Selenium::WebDriver::Remote::Http::Default.new 
client.timeout = 180 # seconds – default is 60 
args = %w{--ignore-ssl-errors=true} 
browser = Watir::Browser.new :phantomjs, :http_client => client, :args => args 
+0

Vielen Dank Sir @Dipak G. habe ich versucht, Ihre script.I auch PhantomJS zuvor versucht haben, aber nicht, weil ich nicht in der Lage war Download figureout 'Datei phantomjs' mit Ich habe viele Google-Suche gemacht und einige ältere Beiträge sagte mir, dass Datei-Download ist nicht möglich mit 'phantomjs'. Ich habe keine Ahnung, wie dieses Problem zu lösen, das auch auf' Heroku' funktioniert. Ich muss eine PDF-Datei von einem herunterladen website.Ich habe nicht seinen Link, wie es 302 (Javascript Redirect) ist. Ich bin nicht sicher, ob dies mit mechanize gem erreicht werden kann.Bitte schlagen Sie mir mögliche Lösungen für dieses Problem. – Rais

Verwandte Themen