【发布时间】:2016-08-26 13:52:37
【问题描述】:
我正在使用 watir webdriver 及其无头功能以及 Firefox 浏览器来访问一个网站,例如 www.xyz.com。单击不同的按钮并下载 pdf。我在本地环境中实现了这一点。当我将我的应用程序推送到heroku,它要求构建包。我添加了构建包,它们存在于我的 heroku 中。我通过运行heroku run bash 找到了这个。
使用的依赖项是:
gem 'watir-webdriver', '~> 0.9.1'
gem 'headless', '~> 2.2', '>= 2.2.3'
Buildpack of Xvfb
Buildpack of firefox
Xvfb buildpack 工作正常。运行 browser = Watir::Browser.new(:firefox, :profile => profile) 时,我遇到了类似 Selenium::WebDriver::Error::WebDriverError: unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) 的奇怪错误
或set path for firefox。我已经为 Firefox Selenium::WebDriver::Firefox::Binary.path='vendor/firefox/firefox-bin' 设置了路径
.我可以在我的heroku bash 中看到安装在那个位置的firefox。
我不确定这是heroku问题还是buildpack问题。虽然buildpack的开发人员说他无法在heroku上运行他的firefox buildpack,但他能够在Amazon EC2上部署。可以安装和使用在heroku上具有所有功能(如打开和关闭浏览器、下载pdf、打开标签)的firefox?如果我对我的问题不太清楚,我很抱歉。
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
【问题讨论】:
标签: ruby-on-rails firefox heroku watir buildpack