大家好我正在使用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>
答案 0 :(得分:4)
text_field
是Watir::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