“无头”浏览器仍然在脚本中打开FireFox,而这反过来又无法在cron作业中运行。为什么?

时间:2015-10-15 21:16:52

标签: ruby bash watir watir-webdriver headless

我写了一段代码,要在一个运行在cron作业上的脚本中调用,知道它必须是一个无头浏览器才能在cron作业中运行,我找到了Headless。这听起来像是一个美妙的宝石,完全按照我的意愿去做,唯一的问题是当我运行代码时它仍会打开FireFox。

我认为无头的全部意义在于不必访问显示器并在后台运行,例如:phantomjs。我错过了什么,或者我错了无头宝石应该完成的事情? (当我尝试使用时,底部的P.S.:phantomjs)

#encoding: utf-8
require 'watir-webdriver'
require 'headless'

#log into admin dashboard
headless = Headless.new
browser = Watir::Browser.start 'http://app.mycompany.com/admin'
browser.link(:xpath =>'/html/body/div/div/div/div/a').when_present.click
browser.text_field(:id => 'Email').when_present.set 'me@mycompany.com'
browser.button(:id => 'next').click
browser.text_field(:id => 'Passwd').when_present.set 'password'
browser.button(:id => 'signIn').click
browser.goto 'https://app.mycompany.com/admin/dashboard'


#browser is at dashboard to grab yesterday's numbers 
code that grabs data

#closes browser after grabbing data
browser.close
headless.destroy

#send timestamp
current_time = Time.now

puts "Screen grabbed at " + current_time.inspect + "\n\n"

#puts all data into array then outputs array split on each metric's title
dailyreportdata = [my glorious array of data]

dailyreportdata.each_slice(2) { |x|
  puts x.join
}

我的脚本运行完成,但数据没有显示,因此我猜测它在尝试加载浏览器时会进行故障转移,因此不会加载任何数据来抓取并发送到我的文件。

我的脚本看起来像这样:

#!/bin/sh


_now=$(date +"%m_%d_%Y")


ruby dailyreportscraper.rb > ~/dailyscrape_$_now.txt

如果我在cron作业之外运行它,它可以正常工作。

P.S。 - 我尝试过phantomjs,但每次进入“输入电子邮件”字段时,它都会等待元素出现 - 这是谷歌登录,所以可能与此有关,我甚至尝试使用xpath同样。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

执行headless.start后致电headless = Headless.new

确保您正在运行Xvfb。

相关问题