如何使用Watir监视更改元素?

时间:2011-12-01 01:42:09

标签: watir

我正在测试一个网页,其中有一个特定的div每分钟都会发生变化,我想进行测试以确保它实际上是在变化而不是卡住。理想情况下,我想永久地(或至少很长一段时间)运行它。这是Watir可以实现的吗?这项工作有更好的工具吗?

以下是正在发生的事情的一个例子:

<div class="widgets ui-scrollview-view" style="overflow: hidden; left: -11475px; top: 0px; width: 12150px;">
    <div id="main1" class="some_class">
    <div id="main2" class="some_other_class">
</div>

main2 div是正在显示的那个...每次有更新时,新的div id递增,旧div向上移动(例如main3显示,main2向上移动,main1不再显示在HTML中)。因此,经过一段时间后,它可能会像:

<div class="widgets ui-scrollview-view" style="overflow: hidden; left: -1350px; top: 0px; width: 2025px;">
    <div id="main2" class="some_class">
    <div id="main3" class="some_other_class">
</div> 

我想确保在一段合理的时间后产生新的div。

2 个答案:

答案 0 :(得分:1)

如果它是类正在改变的属性。并且您有一些可用于标识对象的其他属性,然后您可以使用.attribute_value method检查您感兴趣的属性并查看当前设置的属性。

e.g。 (编辑以反映对问题的更改)

browser.goto("PageYouWantToMonitor")
1000.times do |i|
  puts "sample Number #{i}"
  puts "First div ID is: #{browser.div(:class => 'widgets ui-scrollview-view').div(:index => 0).attribute_value('id')}"
  puts "Second div ID is: #{browser.div(:class => 'widgets ui-scrollview-view').div(:index => 1).attribute_value('id')}"
  sleep 30
end

简单的例子,虽然对于长时间的测试,写出某种带有时间戳加上值的日志文件可能更有用。 Ruby内置了一些非常有用的日期/时间库,以及文件IO,一些谷歌搜索应该在每个库上找到一些基本的教程。

答案 1 :(得分:0)

您可以根据需要使用Watir运行测试。请注意,我不确定任何浏览器都可以永久运行。 :)

问题是,你怎么知道检查哪个div?有什么保持不变吗?像往常一样,有关div如何改变的2-3个例子会有所帮助。

例如:

<div id="change">one</div>

更改为

<div id="change">two</div>

然后到

<div id="change">three</div>

检查div文本我会很简单
browser.div(:id => "change").text