【问题标题】:Ruby watir page object implementationRuby Watir 页面对象实现
【发布时间】:2020-05-25 02:28:10
【问题描述】:

尝试将带有webelement 的变量添加到方法中,然后将此方法与.click 一起使用

def login_button
@browser.element(:class => /button radius button-demo/)
  end

login_button.click 

但是,不断收到同样的错误:

未定义的局部变量或方法`login_button' PageObjects:Class (NameError)

但如果你这样做:

 @browser.element(:class => /button radius button-demo/).click

无需将其添加到方法中,一切正常。

Watir 官方指南提供了向方法添加变量的选项,但由于某种原因我无法使其工作:(

【问题讨论】:

  • 你可以使用俗气的页面对象。然后您可以创建如下button(:login_button, :class => /button radius button-demo/) 的元素。点击元素login_button.click

标签: ruby watir pageobjects


【解决方案1】:

这是使用俗气的页面对象的简单代码 sn-p。

require 'page-object'
class Login_Page
   include PageObject
   text_field(:user_name, css: "[name='username']")
   text_field(:password, css: "[name='password']")
   button(:sign_in, css: "button[type='submit']")

   def click_on_sign_in
       sign_in # default method is click for button element
       # if you want to call click method
       sign_in.wait_until(100, &:present?).click
       # clicking using fire event
       sign_in.wait_until(100, &:present?).fire_event :onclick
   end
end

请参阅cheezy documentation 了解更多信息。

【讨论】:

  • 好吧,这很奇怪,我按照俗气的指南和你的例子做了一切,现在我遇到了另一个问题,Ruby 实际上没有看到“sign_in”变量,我试图在课堂上做一个方法,试图在课堂外做,同样的事情“sign_in”,Ruby看不到。
  • 你想调用click_on_sign_in方法还是访问`Login_Page类中的元素?
  • 发现问题所在,RubyMine IDE 无法识别您分配给按钮/文本字段的名称。一切正常,谢谢!
猜你喜欢
  • 2015-06-22
  • 2015-05-20
  • 2018-08-17
  • 2019-03-17
  • 2019-02-19
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多