如何从show_links,show_tables,show_images,show_divs创建可用于创建可重用测试的数组

时间:2011-01-01 22:23:34

标签: ruby arrays watir

我是编程/ Ruby / Watir的新手,我想知道如何从网站上抓取的内容创建数组。

基本上我提示用户进行网站测试,输入网址,并且(最终)我希望能够让用户选择他们想要定位的网页的哪些元素。< / p>

###################### 
# User prompts for site to be tested   #
#######################

置贴'自动化测试工具:输入您要测试的网站' URL = gets.chomp 把'测试以下网站:'''+ url +''''

##################### 
# Watir method for invoking IE     #
#####################
  require 'watir/ie'
  ie = Watir::IE.new
  ie.goto url

  **ie.show_links.each {|l| puts l}**

我用另一个Watir / Ruby网站获得的粗体线,当它成功打印到屏幕上的所有链接时,我宁愿存储链接/ images / tables / div,然后给用户选择如何/什么将被测试。显然,我需要更加深入了解Arrays如何在Ruby中工作。提前谢谢。

2 个答案:

答案 0 :(得分:1)

它们已经在一个数组中:ie.links http://wtr.rubyforge.org/rdoc/1.6.5/classes/Watir/Container.html#M000318

您可以找到许多您想要选择的类型。祝你好运

答案 1 :(得分:0)

内容与元素不完全相同。页面元素存储在容器中,并通过其内容(以及其他内容)引用元素。因此,如果您想存储一堆文本字段的ID,那么就可以创建一个数组......

text_field_id_array = Array.new
ie.text_fields.each { |field| text_field_id_array << field.id }

但是存储文本字段本身只存储“指针”。因此,如果您在页面上有链接并使用ie.link(:index,1)存储了链接元素,那么在您存储的链接之前执行了在页面上创建链接的内容,然后单击您不存储的链接单击您存储的同一链接。它会点击“ie.link(:index,1)”。页面上的第一个链接......

mylink = ie.link(:index, 1)           # Store the link you want
ie.button(:name, 'createsanearlierlink').click
mylink.click                          # Click the wrong link

我真的希望这是有道理的。