确认数组中项目的顺序
Confirming the order of items in an array
我在使用 Nightwatch.JS 断言应用程序中的文件名列表的顺序正确时遇到了一些困难,因为这些文件名可以按不同的顺序拖放。问题不一定与 Nightwatch 方法有关,而只是使用简单的 Javascript。假设我有一个按特定顺序排列的姓名列表:0 - Becky,1 - Ann,2 - Billy,3 - Seth。我还有列出这些名称的数组:var names = ["Becky", "Ann", "Billy", "Seth"];
并且我想根据 'names' 数组中的名称检查实际列表的顺序(假设每个名称都是一个 xPath 选择器)。使用下面的起始代码,我将如何检查数组的实际顺序?注意:代码在 shorthand 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
好的,在我同事的帮助下,我们能够通过使用一些 Nightwatch 特定方法并添加索引和一些参数来解决这个问题。我需要做的第一件事是确定 "actual" 列表中每个项目的订单值。为此,我们使用 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
希望这对遇到类似问题的人有所帮助。
我在使用 Nightwatch.JS 断言应用程序中的文件名列表的顺序正确时遇到了一些困难,因为这些文件名可以按不同的顺序拖放。问题不一定与 Nightwatch 方法有关,而只是使用简单的 Javascript。假设我有一个按特定顺序排列的姓名列表:0 - Becky,1 - Ann,2 - Billy,3 - Seth。我还有列出这些名称的数组:var names = ["Becky", "Ann", "Billy", "Seth"];
并且我想根据 'names' 数组中的名称检查实际列表的顺序(假设每个名称都是一个 xPath 选择器)。使用下面的起始代码,我将如何检查数组的实际顺序?注意:代码在 shorthand 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
好的,在我同事的帮助下,我们能够通过使用一些 Nightwatch 特定方法并添加索引和一些参数来解决这个问题。我需要做的第一件事是确定 "actual" 列表中每个项目的订单值。为此,我们使用 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
希望这对遇到类似问题的人有所帮助。