Ruby cucumber自动化套件 - 在迭代

时间:2016-03-21 12:16:38

标签: ruby cucumber automated-tests watir

我继承了一个测试自动化套件,在修改它时,我正在尝试编写一个函数来测试相同的链接,这些链接存在于同一个网页中,但是在不同的div中,标签ID是动态的。

我在下面定义了一个函数,它接受一个HTML元素并向元素

发送一个动作
 def element_do(html_element, html_element_type, html_element_value, action)
   @browser.send(html_element.to_sym,html_element_type.to_sym ,html_element_value).send(action) 
 end

我有一个定义为somemethod的方法,我试图使用some_element#{i}调用特定div中的方法,如下所示

def multiple_accounts
  @num_accts.each do |i|
    p "validating for account #{i}"
    @page.element_do(:div,:id,"some_element#{i}",somemethod)
  end

我面临的问题是,在第二次迭代时,action参数将作为null而不是somemethod传递。我是ruby自动化的新手,我不确定到底发生了什么。任何帮助表示赞赏

其他详细信息 - 基于问题 1)@num_accts是一个通过扫描网页文本并包含帐号来获得的数组(例如:[56544,87990])

2)这构成了div的id的一部分,如" acct#56544"。所以我将数组元素从num_accts传递给" acct#{i}"被称为“some_element'

3)' Somemethod'是一种定义为单击div中特定链接的方法,并验证文本以确认链接重定向到正确的页面。当只有一个div时,某些方法可以正常工作。

1 个答案:

答案 0 :(得分:0)

这个问题并不明显,但我怀疑你试图传递方法的名称(返回null),而是调用方法。我想你的电话应该是:

@page.element_do(:div,:id,"some_element#{i}",'somemethod')