gpt4 book ai didi

ruby - 使用 celerity 在 linux 上登录 saleforce.com(没有 gui),JS 和 VB 错误

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:56 24 4
gpt4 key购买 nike

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

我正在使用 jruby 和 celerity (它是 htmlunit 的 jruby 包装器,一个 headless 浏览器,它也支持 javascript)。

要求是它从 LINUX 命令行运行,无需安装 gui/浏览器。 headless 浏览器还需要支持 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

最佳答案

(从问题评论中复制只是为了将其从“未回答的问题”中删除)

您能否在尝试登录后 try catch Celerity“看到”的页面?也许提到了一些错误,也许你可以检查你返回的 HTTP header ,验证你是否已经登陆主页地址......我闻到一些安全设置(具有黑名单 IP 的机器或者当你需要接收时可能是这个屏幕验证电子邮件并单击 Celerity 附带的链接以设置 cookie)。

关于ruby - 使用 celerity 在 linux 上登录 saleforce.com(没有 gui),JS 和 VB 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4739953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com