页面对象gem似乎不起作用

编程入门 行业动态 更新时间:2024-10-26 23:25:34
本文介绍了页面对象gem似乎不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试在我的watir-webdriver脚本中使用页面对象gem,我想我可能会遗漏一些东西.

I am trying to use page-object gem in my watir-webdriver scripts and I think I might be missing something.

这是我的log_in.rb代码: 需要"./all_deals"

Here is my code for log_in.rb: require "./all_deals"

class LogIn include PageObject text_field(:email, :id => 'UserName') text_field(:password, :id => 'Password') checkbox(:remember_me, :id => 'RememberMe') button(:log_me_in, :value => 'Login') def initialize(browser) @browser = browser end def log_in (email, password) self.email = email self.password = password remember_me log_me_in AllDeals.new(@browser) end end

我的home_page.rb

My home_page.rb

require "./log_in" class HomePage def initialize(browser) @browser = browser end def visit @browser.goto "treatme.co.nz/" end def go_to_log_in @browser.goto "treatme.co.nz/Account/LogOn" LogIn.new(@browser) end end

这是我的log_in_test.rb

Here is my log_in_test.rb

require "rubygems" require "test/unit" require "watir-webdriver" require "page-object" require "./home_page" class LogInTest < Test::Unit::TestCase def setup @browser ||= Watir::Browser.new :firefox end def teardown @browser.close end def test_fail @home_page = HomePage.new(@browser) @home_page.visit @log_in_page = @home_page.go_to_log_in @all_deals = @log_in_page.log_in("test@gmail","test") assert (@all_deals.get_title == "GrabOne Daily Deals - Buy Together, Save Together") end end

测试运行的结果是:

Finished tests in 22.469286s, 0.0445 tests/s, 0.0000 assertions/s. 1) Error: test_fail(LogInTest): NoMethodError: undefined method `text_field_value_set' for nil:NilClass C:/Ruby193/lib/ruby/gems/1.9.1/gems/page-object-0.9.2/lib/page-object/accessors.rb:142:in `block in text_field'

我正在将Ruby 1.9与页面对象gem 0.9.2.一起使用.

I am using Ruby 1.9 with page-object gem 0.9.2.

你能帮我吗?

在每个rb文件中,我还需要要求它引用的类文件,有没有一种方法不必每次都声明它?

Also in each of those rb file, I need to require the class files it references, is there a way I don't have to declare it every time?

非常感谢.

推荐答案

解决异常问题

正在发生异常,请重新定义初始化方法的登录页面.

That exception is occurring do to the LogIn page re-defining the initialize method.

class LogIn include PageObject def initialize(browser) @browser = browser end end

当包含PageObject时,它已经添加了特定的初始化方法.您的班级将覆盖该初始化,并可能导致某些事情无法正确设置.

When you include PageObject, it already adds a specific initialization method. Your class is overriding that initialization and presumably causing something to not get setup correctly.

删除initialize方法将使您摆脱该异常.

Removing the initialize method will get you past that exception.

但是,您随后将遇到remember_me不是变量/方法异常的情况.假设您要选中此复选框,则应为check_remember_me.

However, you will then hit a remember_me is not a variable/method exception. Assuming you want to check the checkbox, it should be check_remember_me.

需要课程文件

通常我的测试文件需要一个文件,该文件需要我的所有page_objects.这与您需要任何其他gem或库的概念类似.

I usually have my test file require a file that requires all my page_objects. It is a similar concept to how your would require any other gem or library.

例如,我将使用以下内容创建一个treatme.rb文件:

For example, I would create a treatme.rb file with:

require 'log_in' require 'home_page'

假设您按要求的顺序要求文件(即首先需要其他人需要的文件),则您的页面对象文件(即log_in.rb和home_page.rb)都不需要做任何要求.

Assuming you require the files in the required order (ie files that are needed by others are required first), none of your page object files (ie log_in.rb and home_page.rb) should need to do any requiring.

您的测试文件将只需要您的Treatme.rb文件.示例:

Your test files would then just require your treatme.rb file. Example:

require './treatme'

更多推荐

页面对象gem似乎不起作用

本文发布于:2023-05-31 22:05:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/400222.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不起作用   对象   页面   gem

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!