使用nightwatch.js手动覆盖孩子

问题描述 投票:0回答:1

我目前正在编写Nightwatch测试,以从列表中选择一个新文档。我将需要能够选择列表中的下一个。有没有一种方法可以手动覆盖需要选择的子编号?

例如正在使用的当前选择器是:

<ul class="dv-packdocs">
 <li class="dv-packdoc"<div class="icon-todo"></li>
 <li class="dv-packdoc"<div class="icon-todo"></li>
 <li class="dv-packdoc"<div class="icon-todo"></li>
 <li class="dv-packdoc"<div class="icon-todo"></li>
</ul>

测试将类似于:

viewer.selectNewDocument([2])

这是否会选择ul下的第二个孩子?

或者我是否必须指定每个子元素?

javascript node.js nightwatch.js
1个回答
0
投票

如果我理解正确,您正在尝试从动态长度列表(li,根据用户输入或其他站点操作填充列表的位置)中动态找到合适的子元素(ul)> )。对吗?

我看到两种使用两种不同方法的场景:

1。

您有一个固定/固定的条件识别目标元素的方式):例如,在您的列表中,第二个li将被以下对象作为目标命令。

viewer.selectNewDocument('ul.dv-packdocs li:nth-child(2)')考虑到您要将完整的选择器传递给selectNewDocument函数

[viewer.selectNewDocument(2),传递一个number并在命令内形成选择器(如果您出于审美目的

):
selectNewDocument: function(index) {
  this.api.perform((done) => {
    // Click the second document in the list:
    let selector = `ul.dv-packdocs li:nth-child(${index})`;
    this.api.click(selector);
    done();
  });
  return this;  
},

或者,如果要添加最后一个文档,则必须在elements上发出ul调用以检索列表的长度,然后以相同的方式使用它来确定哪个li您必须单击:viewer.selectNewDocument('ul.dv-packdocs li:nth-child('+length+')')其中length是您的elements通话的结果

)。

2。

您没有固定的条件如果第一部分没有涉及,或者今天晚些时候,我会在假期结束后猛烈抨击] )

希望这就是您想要的!干杯!

© www.soinside.com 2019 - 2024. All rights reserved.