如何使用页面对象模式清除我的水豚步骤?

时间:2013-03-05 09:42:45

标签: ruby cucumber capybara site-prism

我使用Page Object Pattern gem'site_prism'进行以下步骤定义:

class Main < SitePrism::Page
  element :login_link, "a.log-in-link"
  element :login_field, "input[name='userLogin']"
  element :pass_field, "input[name='userPassword']"
  element :enter_button, ".button_pretty"
end

If /I'm log in as "([^"]*)" with password "([^"]*)"$/ do |login, pass|
    @main = Main.new
    @main.login_link.click
    @main.login_field.set login
    @main.pass_field.set pass
    @main.enter_button.click
end

它工作正常,但看起来非常沉重和不美观。有没有办法像capybara'在'方法一样写它?以下不起作用(错误:“无法将Main转换为String(TypeError)”)

within @main do
    login_link.click
    login_field.set login
    pass_field.set pass
    enter_button.click
end

2 个答案:

答案 0 :(得分:1)

你可以破解对Ruby的with语句的支持:

http://www.ruby-forum.com/topic/128781#574402

(我在VBScript中看过这个,不确定是否有其他语言支持开箱即用)。

答案 1 :(得分:0)

不,你不能在site_prism中使用capybara的within功能。