页面对象设计:是否有一个与Ruby gem“ site_prism”等效的Javascript

问题描述 投票:4回答:2

我想知道Protractor的Javascript(NodeJS)中是否有一个框架,与site_prism一样,它支持一种干净的方法来定义页面对象上的页面对象元素。我已经检查过astrolabe,但不太符合目的。

这是用site_prism声明页面对象的方式>>

class Home < SitePrism::Page
  set_url "/index.htm"
  set_url_matcher /google.com\/?/
  element :search_field, "input[name='q']"
  element :search_button, "button[name='btnK']"
  elements :footer_links, "#footer a"
  section :menu, MenuSection, "#gbx3"
end

class MenuSection < SitePrism::Section
  element :search, "a.search"
  element :images, "a.image-search"
  element :maps, "a.map-search"
end

除了Protractor,有人知道或已经开发出如上所述的解决方案。也许有人在内部使用自定义框架,您愿意开源吗?

关于astrolabe,它缺乏集合支持,我正在寻找一种更具说明性的语法;代替

username: { get: function() { return this.findElement(this.by.input('username')); },

我期待一些更具声明性的内容,例如:

username: By.input('username'),

可以在此处进一步研究缺少的astrolabe功能,但我的问题不是关于astrolabe本身,而是关于JS是否有更好的site_prism等效项。

注意:由于没有足够的关注,所以从Software Quality Assurance & Testing迁移问题。

我想知道Protractor中的Javascript(NodeJS)中是否有一个框架,该框架像site_prism一样,支持一种清晰的方法来定义页面对象上的页面对象元素。我已经检查过...

javascript selenium-webdriver protractor pageobjects site-prism
2个回答
0
投票

我使用这种模式(更清洁):


0
投票

我正在使用此npm package来声明页面对象选择器。例如,site_prism代码如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.