2011-01-19 1 views
3

배경 : 아래 스크립트는 내 salesforce.com 계정에 로그인하고 많은 "다운로드"링크를 클릭하려고 시도합니다 결과 .zip 내보내기 파일을 로컬에 저장하십시오.Celerity를 ​​사용하여 Linux on salesforce.com에 로그인하십시오. (예/아니요), JS 및 VB 오류

저는 jruby와 celerity (jtml은 자바 스크립트를 지원하는 헤드리스 브라우저 인 jurby 래퍼입니다)을 사용하고 있습니다.

gui/브라우저를 설치하지 않고 LINUX 명령 줄에서 실행해야합니다. 헤드리스 브라우저는 javascript도 지원해야합니다. salesforce.com은 오류를 반환하며 다운로드 링크를 렌더링하지 않습니다. (나는 CURL을 시도했지만 자바 스크립트를 지원하지 않기 때문에 실패했다.) 내가 리눅스 상자에서이 작업을 실행하려고하면 , 난 아래의 오류가 발생하고 스크립트가되지 않습니다

이 질문 (A WINDOWS 상자의 명령 줄에서 실행하면 현재 스크립트가 잘 작동) Salesforce에 로그인하는 것으로 보입니다. 나는의 .js 경고 (내가 생각하는) 괜찮다는 생각,하지만 난 VBScript not supported in Window.execScript() 경고가 무엇을 의미하는지?

[[email protected] ~]# 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 = '[email protected]' 
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 
+0

죄송합니다. 문제를 복제 할 수있는 계정이 없지만 팁을 줄 것입니다. 'Enumerable # each_with_index'는 별도의 카운터를 없애줍니다. –

+0

Celerity의 페이지를 캡처 할 수 있습니까? " "로그인 시도 후? 어쩌면 언급 된 오류가있을 수 있습니다. 아마도 돌아온 HTTP 헤더를 검사하고 홈페이지 주소에 착륙했는지 확인하십시오. 보안 설정 (컴퓨터가 검은 색으로 나열된 IP 또는 아마도이 화면이 나타날 때 냄새가납니다. 확인 전자 메일 및 쿠키를 설정하기 위해 Celerity와 함께 제공되는 링크를 클릭하십시오. – eyescream

+0

팁을 주셔서 감사합니다. .each_with_index는 ruby ​​1.9에서 지원되며 1.8.6에서는 .to_enum (: each_with_index) – solidlight

답변

3

(질문 코멘트에서 복사 그냥 "대답없는 질문"에서 제거) 이해가 안 돼요

로그인 시도 후에 Celerity 페이지를 캡처 할 수 있습니까? 어쩌면 언급 된 오류가있을 수 있습니다. 아마도 돌아온 HTTP 헤더를 검사하고 홈페이지 주소에 착륙했는지 확인하십시오. 보안 설정 (컴퓨터가 검은 색으로 나열된 IP 또는 아마도이 화면이 나타날 때 냄새가납니다. 확인 전자 메일 및 쿠키를 설정하기 위해 Celerity와 함께 제공되는 링크를 클릭하십시오.

관련 문제