Tag: site prism

如何动态地将部分添加到SitePrism页面对象?

我正在使用SitePrism来测试我的Web应用程序。 我有许多扩展SitePrism::Page的类,许多经常使用的HTML片段由扩展SitePrism::Section匹配类表示 class Login < SitePrism::Section element :username, "#username" element :password, "#password" element :sign_in, "button" end class Home < SitePrism::Page section :login, Login, "div.login" end 问题是,我正在处理的应用程序基于CMS,其中可以通过基于预定义内容选择模板然后将任意数量的可用组件拖放到页面上来组装页面。 初始开发人员创建了一个页面对象来镜像每个可用的模板 。 只要测试数量很少并且我们不得不在我们的function文件中测试的页面变体太多,这就没问题了。 随着多个测试用例的增加,页面对象开始以惊人的速度增长。 虽然我们可以通过为CMS中可用的每个组件定义Sections并在页面对象中重用它们来轻松减轻代码重复,但是很多属性很少被使用。 class BlogPost < SitePrism::Page section :logo, MySite::Components::Logo, '.logo' section :navigation, MySite::Components::Navigation, '.primary-navigation' section :header, MySite::Components::BlogHeader, '.header' section :introduction, MySite::Components::Text, '.text .intro' # and so […]