nightwatch.js page_objects 中的多个级别的部分

Multiple level of sections in page_objects in nightwatch.js

我刚开始使用 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'
      }
    }
  }
};

我们能否在部分中包含部分,如果不能,我们如何 select 在测试用例中使用 @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');
      }
    });

谢谢!

"Working With Page Objects" 的 nightwatch.js 文档指定

Note that every command and assertion on a section (other than expect assertions) returns that section for chaining. If desired, you can nest sections under other sections for complex DOM structures.

所以,我尝试使用 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;

谢谢!