Использование скорости для входа на сайт saleforce.com в linux (без графического интерфейса), ошибки JS & VB - PullRequest
3 голосов
/ 19 января 2011

ФОН: Приведенный ниже скрипт входит в мою учетную запись 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

1 Ответ

3 голосов
/ 22 января 2011

(Скопировано из комментариев к вопросу только для того, чтобы удалить его из "неотвеченных вопросов")

Можете ли вы попытаться захватить страницу, которую Celerity "видит" после вашей попытки входа в систему?Может быть, упоминается какая-то ошибка, может быть, вы можете проверить полученный HTTP-заголовок, проверить, попали ли вы на адрес домашней страницы ... Я чувствую некоторые настройки безопасности (компьютер с IP-адресом из черного списка или, возможно, этот экран, когда вам нужно получитьподтверждение по электронной почте и нажмите на ссылку, которая входит в Celerity для установки cookie).

...