ФОН:
Приведенный ниже скрипт входит в мою учетную запись salesforce.com и пытается щелкнуть несколько ссылок «скачать» и сохранить полученные файлы экспорта .zip локально.
Я использую jruby и celerity (который является оберткой jruby для htmlunit, браузера без головы, который также поддерживает javascript).
Требуется, чтобы он запускался из командной строки LINUX без установленного графического интерфейса или браузера. Обезглавленный браузер также должен поддерживать javascript, иначе salesforce.com
возвращает ошибку и не будет отображать ссылки для скачивания. (Я пробовал CURL, но он не работает, так как он не поддерживает JavaScript).
(В настоящее время сценарий отлично работает при запуске из командной строки в поле WINDOWS )
ВОПРОС:
Когда я пытаюсь запустить его из окна Linux, я получаю сообщение об ошибке ниже, и сценарий не отображается для входа в систему Salesforce. Я верю, что предупреждение .js в порядке (я думаю), но я не понимаю, что означает предупреждение VBScript not supported in Window.execScript()
?
[root@ip-10-114-241-55 ~]# jruby download_sf_export_files.rb
Jan 18, 2011 2:16:41 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'https://www.salesforce.com/common/assets/js/global2.js?date=100817', but got 'application/x-javascript'.
Jan 18, 2011 2:16:41 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'https://www.salesforce.com/common/assets/thirdparty/omniture/s_code3.js?date=101012', but got 'application/x-javascript'.
Jan 18, 2011 2:38:05 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'https://na7.salesforce.com/static/101210/js/functions.js', but got 'application/x-javascript'.
Jan 18, 2011 2:38:06 AM com.gargoylesoftware.htmlunit.javascript.host.Window jsxFunction_execScript
WARNING: VBScript not supported in Window.execScript().
-----install instructions------
download jruby: http://jruby.org/download
install gem from command line: jruby -S gem install celerity
run script from command line: jruby download_sf_export_files.rb
-----download_sf_export_files.rb-------
require "rubygems"
require "celerity"
browser = Celerity::Browser.new
browser.goto('https://na7.salesforce.com')
browser.text_field(:name, 'username').value = 'myuserlogin@domain.com'
browser.text_field(:name, 'pw').value = 'mysecretpassword'
browser.button(:name, 'Login').click
browser.goto('https://na7.salesforce.com/ui/setup/export/DataExportPage/d')
## assume multiple 'download' links if a large SF data export
## group all links in a map, iterate and click each one
i=1
hrefs = browser.links.map { |link| link.href if link.text =~ /download/ }.compact hrefs.each do |href|
browser.link(:url, href).download
puts "found a 'download' link on page, clicking link..."
io = browser.link(:text, "download").download
File.open("sf_zip_file_#{i}.zip", "w+") { |file| file.write(io.read) }
i+=i
end