【问题标题】:Confirming the order of items in an array确认数组中项目的顺序
【发布时间】:2017-12-15 20:37:39
【问题描述】:

我在使用 Nightwatch.JS 断言应用程序中的文件名列表的顺序正确时遇到了一些困难,因为这些文件名可以以不同的顺序拖放。该问题不一定与 Nightwatch 方法有关,而是与使用简单的 Javascript 相关。假设我有一个按特定顺序排列的名字列表:0 - Becky,1 - Ann,2 - Billy,3 - Seth。我也有列出这些名称的数组:var names = ["Becky", "Ann", "Billy", "Seth"];,我想根据“名称”数组中的名称检查实际列表的顺序(假设每个名称都是一个 xPath 选择器)。使用下面的起始代码,我将如何检查数组的实际顺序?注意:代码是速记coffeescript,而不是javascript。

exports.command = (names) ->
@useXpath()

names.forEach (name) =>
  shoeboxItemSelector = "//*[@id='sidebar-plugins']//div[@class='webgis-shoebox-item']//div[contains(text(), '#{ name }')]"
  @assert.elementPresent shoeboxItemSelector

this

【问题讨论】:

    标签: javascript arrays coffeescript nightwatch.js


    【解决方案1】:

    好的,在我同事的帮助下,我们能够通过使用一些 Nightwatch 特定方法并添加和索引以及一些参数来解决这个问题。我需要做的第一件事是确定“实际”列表中每个项目的订单价值。为此,我们使用 WebDriven 协议@element/element() 在应用程序中搜索元素并声明它的订单值。完成此操作后,将索引值添加到每个选择器以检查参数数组项的顺序,然后断言其他一些属性(标题和类型 - 虽然与初始问题并不真正相关)。最终代码如下所示:

    exports.command = (names) ->
      @useXpath()
    
      @elements "xpath", "//div[div[@class='webgis-shoebox-item']]//div[contains(@class, 'item-icon')]", ({ value }) ->
        @assert.equal value.length, names.length
    
        names.map ({ title, type }, index) =>
            nameByTypeSelector = "(//div[div[@class='webgis-shoebox-item']]//div[contains(@class, 'item-icon')])[#{ index + 1 }]"
            nameByTitleSelector = "(//div[div[@class='webgis-shoebox-item']]//div[contains(@class, 'webgis-shoebox-label-text')])[#{ index + 1 }]"
    
            @assert.containsText nameByTitleSelector, title
            @assert.cssClassPresent nameByTypeSelector, type
    this
    

    希望这对遇到类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      相关资源
      最近更新 更多