watir方法与我的ruby类冲突

时间:2015-05-21 05:06:36

标签: ruby watir watir-webdriver nomethoderror

大家好我正在使用Watir做一些自动化脚本并试图创建一个ruby类来使它更好但是我遇到了这个错误:

  

examen.rb:6:在'enterEmail'中:#(NoMethodError)的未定义方法'text_field'

这是我的冲突代码的一部分:

require 'watir-webdriver'
class LoginPage 
  def enterEmail (email)
    text_field(:user, :id => 'user_email').set email
  end
end

我看到的问题是:我没有在我的类中定义'text_field()'方法,因为它是一个Watir方法......任何人都知道如何在我创建的类中使用watir方法? / p>

3 个答案:

答案 0 :(得分:4)

text_fieldWatir::Browser类的实例方法。如果要使用它,则必须在该类的实例上调用它。

class LoginPage
  def initialize()
    @b = Watir::Browser.new
  end 

  def enterEmail (email)
    @b.text_field(:user, :id => 'user_email').set email
  end
end

答案 1 :(得分:3)

的确,您的班级没有任何text_field方法。此方法是在Watir::Browser实例上定义的。在你的例子中,没有创建一个。

class LoginPage 
  def initialize
    @browser = Watir::Browser.new
    @browser.goto "http://example.com"
  end

  def enterEmail (email)
    @browser.text_field(:user, :id => 'user_email').set email
  end
end

答案 2 :(得分:2)

Yossi和Martin都有正确的答案。但是因为您正在定义一个logs.setText(logText); logs.positionCaret(logText.length()); 类,所以您应该查看page-object gem。这使您可以定义与您已有的代码几乎相同的LoginPage。你的课程看起来像:

text_field

你执行它就像:

class LoginPage
  include PageObject

  text_field(:user, :id => 'user_email')      

  def enter_email(email)
    self.user = email
  end
end