Ruby agent.click page.links.text iframe中断

时间:2012-04-30 09:23:02

标签: ruby linux sms mechanize

我不知道标题是否合适,但我希望得到一些帮助。我正在寻找一种使用Linux终端发送短信的方法,我发现了一个脚本。脚本是Ruby的,看起来不错。我不熟悉Ruby,但代码很好解释,以便平均可以轻松使用它。

require 'mechanize'
number   = ARGV.shift
message  = ARGV * " "

if message.length > 160 || message.length < 1
  $stderr.puts "Message too short or too long.."
  exit 1
end

agent = WWW::Mechanize.new

page = agent.get('http://www.xxxxxx.com/')
hp_formlogin = page.form('login')
hp_formlogin.username = 'xxxxxxxx'
hp_formlogin.pass = 'xxxxxxxx'
page = agent.submit(hp_formlogin)

#ONLY USED IF YOUR SITE REDIRECTS YOU AFTER LOGIN
page = agent.click page.links.text('Send Free SMS')
pp page

page = agent.get('http://www.xxxxxxxx.com/send/free-sms')
#ONLY USED IF THERE'S NO NAME FOR THE FORMFIELD.
# SO IF YOU HAVE ONE, COMMENT OUT THE LINE BELOW AND ENTER THIS
 hp_formsms = page.form('freesms2')
#hp_formsms = page.forms.first
hp_formsms.frno = number
hp_formsms.message3 = message
page = agent.submit(hp_formsms)

这是代码...但问题是,在登录网站时,它会在进入配置文件之前显示一个中间框架(我认为是iframe)。因此page = agent.click page.links.text('发送免费短信')无效。这是因为,此框架没有名为send free sms的链接。这有一个由图像制成的关闭按钮。如何绕过此框架并发送消息进入配置文件页面。 请帮助..欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以逐帧获取,iframe_with和另一个。
例如:

page.frame_with(:src => %rfoo/).click

请参阅以下文件 http://mechanize.rubyforge.org/Mechanize/Page.html