使用 nightwatch.js 手动覆盖 child
Manually override the child using nightwatch.js
我目前正在为 select 列表中的新文档编写 Nightwatch 测试。我需要能够 select 列表中的下一个。有没有办法手动覆盖需要 selecting 的 child 号码?
例如当前select或正在使用的是:
<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])
这个select会不会是ul
下的第二个child?
或者我是否必须指定每个 child 元素?
如果我理解正确,您正试图从动态长度列表 (ul
中动态查找适当的子元素 (li
),其中该列表是基于根据用户输入或其他站点操作)。正确吗?
我看到两种不同方法的两种情况:
1. 你有一个set/fixed条件(识别目标元素的方式):例如,在您的列表中,第二个 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;
},
或者,如果您想要添加最后一个文档,则必须对 ul
发出 elements 调用以检索列表的长度,然后在相同的位置使用它确定您必须单击哪个 li
的方法:viewer.selectNewDocument('ul.dv-packdocs li:nth-child('+length+')')
( 其中 length
是您 elements
调用 的结果)。
2. 你没有固定条件(如果第一个我就补上部分没有涵盖,或者今天晚些时候,假期过后有点猛烈抨击)
希望这就是您要找的!干杯!
我目前正在为 select 列表中的新文档编写 Nightwatch 测试。我需要能够 select 列表中的下一个。有没有办法手动覆盖需要 selecting 的 child 号码?
例如当前select或正在使用的是:
<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])
这个select会不会是ul
下的第二个child?
或者我是否必须指定每个 child 元素?
如果我理解正确,您正试图从动态长度列表 (ul
中动态查找适当的子元素 (li
),其中该列表是基于根据用户输入或其他站点操作)。正确吗?
我看到两种不同方法的两种情况:
1. 你有一个set/fixed条件(识别目标元素的方式):例如,在您的列表中,第二个 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;
},
或者,如果您想要添加最后一个文档,则必须对 ul
发出 elements 调用以检索列表的长度,然后在相同的位置使用它确定您必须单击哪个 li
的方法:viewer.selectNewDocument('ul.dv-packdocs li:nth-child('+length+')')
( 其中 length
是您 elements
调用 的结果)。
2. 你没有固定条件(如果第一个我就补上部分没有涵盖,或者今天晚些时候,假期过后有点猛烈抨击)
希望这就是您要找的!干杯!