【问题标题】:Multiple level of sections in page_objects in nightwatch.jsnightwatch.js 中 page_objects 中的多级部分
【发布时间】:2015-07-30 08:00:57
【问题描述】:

我刚刚开始使用 nightwatch.js ,我正在使用 page_objects 来访问我的测试中的元素。所以我想知道我们是否可以在页面对象的部分中包含部分?我知道我们可以指定一个级别的部分。我所做的是这样的:

module.exports = {
  url : 'http://127.0.0.1:8111/local.html#open?view=shelf&lang=en_US',
  sections : {
    topContainer : {
      selector : '.top_container',
      elements : {
        logo : {
          selector : '.logo'
        },
        settingsButton : {
          selector :'.dropdown'
        },
        searchBox : {
          selector : '.search_box'
        },
        sortOrderButton : {
          selector : '.icond'
        }
      }
    },
    library : {
      selector : '.library',
      bookList : {
        selector : 'ul.library_container'
      }
    }
  }
};

我们可以在section里面有section吗,如果没有,我们如何在@variable的测试用例中选择

client.elements('css selector','@top_container ul.dropdown-menu li', function (result) {
      if ( result.value.length == 3 ) {
        this.verify.ok(result.value.length, '3 languages loaded');
      }
    });

谢谢!

【问题讨论】:

    标签: node.js selenium testing nightwatch.js


    【解决方案1】:

    “使用页面对象”的 nightwatch.js 文档指定

    请注意,节上的每个命令和断言(除了期望断言)都会返回该节以进行链接。如果需要,您可以在复杂的 DOM 结构的其他部分下嵌套部分。

    所以,我尝试使用 by hit 并尝试制作正确的 json 结构,现在效果很好:)

    page_object 中的示例代码

    sections : {
    book_view : {
        selector : '.read_book_view',
        sections : {
          top_container : {
            selector : '.top_container',
            elements : {
              lib_view : {
                selector : '.lib_view'
              },
              toc_link : {
                selector : '.dropdown .dropdown-toggle'
              },
              toc_index : {
                selector : '.dropdown .index-dropdown'
              },
              notes_and_hightlights : {
                selector : '.page_access'
              },
              settings : {
                selector : '#settings_b'
              },
              search : {
                selector : '.search_trigger'
              },
              zoom : {
                selector : '.zoom_iconsset'
              }
            }
          }
        }
      }
    

    }

    并在测试用例中引用它们,像这样

    var bookSection = bookView.section.book_view;
    
    // Top container
    var topSection = bookSection.section.top_container;
    topSection.expect.element('@lib_view').to.be.present;
    

    谢谢!

    【讨论】:

    • 这里没有嵌套部分
    • 你的代码太笨拙了。如果您仅使用 css 选择器,请直接针对元素编写 css。无需使用带有选择器键的对象。例如。缩放:'.zoom_iconsset'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多