javascript - 页面对象设计 : Is there a Javascript equivalent to Ruby gem "site_prism"

标签 javascript selenium-webdriver protractor pageobjects site-prism

我想知道 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本身但作为是否有更好的site_prism相当于 JS。
注意:从 Software Quality Assurance & Testing 迁移问题因为那里没有得到足够的重视。

最佳答案

我使用这种模式(更干净一点):

'use strict'
exports.MyClassPage = function() {

  var textName = element(by.id("name"));
  var tabUsers = element.all(by.repeater("user in users"));

  this.setTxtName = function(name) {
    return textName.sendKeys(name);
  };
}

关于javascript - 页面对象设计 : Is there a Javascript equivalent to Ruby gem "site_prism",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199378/

相关文章:

jasmine - Protractor 代码在多个测试套件之间共享

javascript - 如何在 React 中加载 MathJax?

javascript - 在开发 WordPress 插件时无法解决使用 cookie 已发送 header 的问题吗?

javascript - Angular Protractor : driver. 等待并 .then 花费 allScriptsTimeout 时间返回

html - 无法使用 Selenium 在网页中定位元素(没有ID)

python - 将YouTube channel 名称纳入评论

protractor - 在 Protractor 的文本框中选择或键入文本的最简单方法?

javascript - 听众被反复添加,但不知道如何添加。我使用 one() 然后使用计时器在每次点击时重新启用它

javascript - 尝试使用 Node JS 设置 API 管理 REST API 身份验证

javascript - Selenium 无法在浏览器 DOM 中定位元素