使用`send`来检查元素是否存在

时间:2014-03-04 18:35:18

标签: ruby watir page-object-gem

此代码应该以字符串作为输入来检查page_object的元素是否存在。脚本必须在发现元素时引发异常,如果不发现则不执行任何操作。

示例页面对象:

span(:partner_flag,          class: 'content-partner-flag')

剧本:

 def check_element_not_exist(page_object)
    page_object = page_object.downcase.gsub(' ', '_')
    option = send("#{page_object}")
    if option.exists?
      raise "#{page_object} was not found!"
    end
 end

在这种情况下,我使用字符串partner_flag来提供函数并检查元素。 Watir失败了:

option = send("#{page_object}")

因为它需要在网页中找到该元素才能定义option。是否有另一种方法来定义option,或使用send功能进行不存在检查的其他方式?

1 个答案:

答案 0 :(得分:0)

存取方法创建了一种检查元素是否存在的方法。

例如,当您包括:

span(:partner_flag, class: 'content-partner-flag')

然后方法:

partner_flag?

如果元素存在,则返回true;如果元素不存在,则返回false。

您可以使用check_element_not_exist方法调用此方法:

def check_element_not_exist(page_object)
  page_object = page_object.downcase.gsub(' ', '_')
  exists = send("#{page_object}?")
  if exists
    raise "#{page_object} was found!"
  end
end