最近开始玩一个叫OGame的web游戏,才玩了几天就发现基建太费时间了,才升到lev12就要等将近2个小时。浏览了游戏的FAQ和讨论区,发现游戏没有提供公开的接口,于是便想写个程序来简化操作,初步考虑了一下,有2个方案可以选择:
A 模拟ie来帮我做一些简单的动作 |
B 利用ie的接口,在特定情况下直接触发ie的事件 |
需求整理如下:
NO | 描述 | 优先度 |
1 |
定期刷新页面获取最新的信息 |
高 |
2 | 根据取得的信息判断,一旦资源满足条件,就开始按照指定策略升级建筑。 | 高 |
3 | 最新信息mail通知 | 低 |
4 | 战斗信息自动log,星图信息自动log | 低 |
准备用ruby来开发,先考察A方案的可行性,使用socket模拟ie访问网站,要解析http的包,工作量比较大。
B方案暂时还没有头绪,ruby下访问com接口只记得有个excel的例子。
于是google了一下,发现Watir(web application testing in ruby)这个东东,是用来自动测试web 应用的一个开源框架。
原理是利用ie的COM接口来操纵ie的一些行为。正好是俺需要的东东。
开始动手了,先翻出一个Watir的sample,是访问google的,很简单,一下就运行通过了。
1
require 'watir'
2
# the watir controller
3
# open the IE browser
4
ie = Watir::IE.new
5
# Step 1: go to the test site: http://www.google.com
6
ie.goto("http://www.google.com")
7
# Step 2: enter 'pickaxe' in the search text field
8
ie.text_field(:name, "q").set("pickaxe") # q is the name of the search field
9
# Step 3: click the 'Google Search' button
10
ie.button(:name, "btnG").click # "btnG" is the name of the Search button
11
# Actual Result: Check that the 'Programming Ruby' link appears on the results page
12
if ie.contains_text("Programming Ruby")
13
puts "Test Passed. Found the test string: 'Programming Ruby'. Actual Results match Expected Results."
14
else
15
puts "Test Failed! Could not find: 'Programming Ruby'"
16
end
17
# End of test: Google search
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Eclipse的Console里面显示:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
好,开头很顺利,下面进一步了解一下watir怎么用。