确认数组中项的顺序

时间:2017-07-11 16:47:52

标签: javascript arrays coffeescript nightwatch.js

我在使用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

1 个答案:

答案 0 :(得分:0)

好的,在我的同事的帮助下,我们能够通过使用一些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

希望这可以帮助任何有类似问题的人。