码迷,mamicode.com
首页 > Windows程序 > 详细

ruby中的win32ole使用

时间:2014-10-03 14:59:44      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   sp   div   问题   

ruby中的win32ole是一个标准库,使用的时候只要添加require ‘win32ole‘就行。

下面是一段模拟一个登陆的代码

 1 require win32ole
 2 
 3 ie = WIN32OLE.new(internetExplorer.application)
 4 
 5 ie.visible = true
 6 ie.navigate(‘www.***.cn)
 7 
 8 sleep(0.2) until ie.busy == false
 9 ie.Document.getElementById(loginId).value = "*****"
10 ie.Document.getElementById(password).value = "*****"
11 #ie.Document.getElementsByTagName(‘input‘).each {|x| x.click if x.value == "登陆"}
12 ie.Document.getElementsByTagName(input).each {|x| x.click if x.name == "user_login"}
13 ie.quit

第一行:添加win32ole头。

第三行:打开一个ie浏览器

第五行:ie可见,如果不写或者false则表示隐藏窗口。

第六行:使用navigate跳转到一个网址。

第八行:等待页面加载完全。如果页面忙,则等待0.2s。

第九行到第十行:输入账号密码。这里用到的是HTML DOM树的相关知识。

十一行和十二行:模拟点击登录按钮。有三种方法可以访问html元素,getElementById,getElementsByTagName,getElementsByClassName(在IE5,6,7,8中不能用)。如果元素有id的话当然用id比较好,可以准确的定位。但是没有id这个属性的话,那只能用其他的了。我用了getElementsByTagName,这个方法会返回所有的名字是参数(本例是input)的元素的集合。但是这个集合不能用[]来访问,它会说没有这个错误或者方法,需要用each来调用。参看each方法官方文档:Iterates over each item of OLE collection which has IEnumVARIANT interface,说明迭代元素是有调用属性的接口的。另外,有些编辑器用中文会出现错误,又是那些编码的问题,如第十一行,那么用另一个属性就好了。

第十三行:退出。

 

ruby中的win32ole使用

标签:style   blog   color   io   使用   ar   sp   div   问题   

原文地址:http://www.cnblogs.com/smallbottle/p/4004911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!