Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用快速登录linux上的saleforce.com(无gui),JS&;VB错误_Ruby_Salesforce_Watir_Htmlunit_Celerity - Fatal编程技术网

Ruby 使用快速登录linux上的saleforce.com(无gui),JS&;VB错误

Ruby 使用快速登录linux上的saleforce.com(无gui),JS&;VB错误,ruby,salesforce,watir,htmlunit,celerity,Ruby,Salesforce,Watir,Htmlunit,Celerity,背景: 下面的脚本登录到我的salesforce.com帐户,尝试单击一组“下载”链接,并将生成的.zip导出文件保存在本地 我正在使用jruby和(它是围绕htmlunit的jruby包装,htmlunit是一种无头浏览器,也支持javascript) 要求是它在没有安装gui/浏览器的情况下从LINUX命令行运行。无头浏览器还需要支持javascript,否则salesforce.com会返回错误,并且不会呈现下载链接。(我尝试了CURL,但失败了,因为它不支持javascript)。 (当

背景: 下面的脚本登录到我的salesforce.com帐户,尝试单击一组“下载”链接,并将生成的.zip导出文件保存在本地

我正在使用jruby和(它是围绕htmlunit的jruby包装,htmlunit是一种无头浏览器,也支持javascript)

要求是它在没有安装gui/浏览器的情况下从LINUX命令行运行。无头浏览器还需要支持javascript,否则
salesforce.com
会返回错误,并且不会呈现下载链接。(我尝试了CURL,但失败了,因为它不支持javascript)。 (当前,在WINDOWS框上从命令行运行时,脚本工作正常)

问题: 当我试图从linux机器上运行此脚本时,我收到下面的错误,并且脚本似乎没有登录到salesforce。我相信.js警告是可以的(我想),但我不明白Window.execScript()中不支持的
VBScript是什么意思?:

[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
(复制自问题评论,只是为了将其从“未回答的问题”中删除)


您能否尝试在尝试登录后快速捕获“看到”的页面?也许这里提到了一些错误,也许你们可以检查你们得到的HTTP头,验证你们是否登陆到了主页的地址上。。。我闻到一些安全设置的味道(带有黑名单IP的机器,或者当您需要接收验证电子邮件并单击带有快速设置cookie的链接时出现此屏幕)。

抱歉,没有SF帐户来复制此问题,但是会给你一个提示:
Enumerable#每个带有_索引的_
都可以让你摆脱单独的计数器。你可以尝试在尝试登录后快速捕获“看到”的页面吗?也许这里提到了一些错误,也许你们可以检查你们得到的HTTP头,验证你们是否登陆到了主页的地址上。。。我闻到一些安全设置的味道(带有黑名单IP的机器,或者当您需要接收验证电子邮件并单击带有快速设置cookie的链接时显示此屏幕)。感谢Mark提供的提示。看起来像。ruby 1.9和1.8.6中都支持每个带索引的。要枚举(:每个带索引的)眼霜,你猜对了!问题是SF ip激活页面。但是,我仍然收到.js和.vb警告。。。我将browser.html保存到一个文件中,以便按照您的建议检查代码。然后添加以下内容以单击我的激活按钮:
if browser.text.include?“您正试图从一台无法识别的计算机访问salesforce.com。”浏览器。按钮(:value,'Send Activation Link')。单击
(误导我的是,我现在可以通过问题访问SF API,这当然是与web登录不同的访问路径。)谢谢!欢迎:)在API中,安全令牌相当于此cookie设置页。。。至于实际的JS/VB错误——如果函数仍然工作,您可能不必担心它们?也许试着将“快速性”设置为不那么严格的模式?不知道:)