如何打破实习生中的元素循环
How do I break a loop of elements in intern
假设我有以下 DOM 结构
<table id="campaigns">
<tr>
<th>Name</th>
<th>Status</th>
</tr>
<tr>
<td>first data</td>
</tr>
<tr data-id="1">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="2">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="3">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT edit</td>
</tr>
<tr data-id="4">
<td>another data</td>
</tr>
<tr data-id="5">
<td>next data</td>
</tr>
</table>
这就是我在实习期间的做法
this.remote
.findAllByXpath("//*[@id='campaigns']/tr"") // get allitem from list
.then(function (options) {
return Promise.all(options.map(function (option) {
return option.getVisibleText()
.then(function (text) {
if (text.includes("intern test")) { // checked whether the value is exist
option.click(); // click the value
}
return text;
})
}))
})
我的要求只是单击一个包含“实习生测试”的文本。
这段代码看起来不错,但实际情况是,当 intern 已经单击 if 语句中的第一个元素时,下一个元素似乎也将执行单击并使该元素失效。
当它找到第一个元素时,如何停止此循环并继续?
感谢您提供的任何帮助
无需遍历所有元素即可找到第一个包含文本的元素"intern test"
使用 findAllByXpath
尝试以下 XPath(我不知道 Javascript - selenium,因此,如果需要请更正语法):
//table[@id='campaigns']/tbody/tr/td[contains(text(),'intern test')]/..
returns 所有 tr
元素的文本包含 intern test
在 table 内,id 为 campaigns
.
使用索引,例如 0, 1, 2
来匹配包含 intern test
的 first, second and third
个元素
假设我有以下 DOM 结构
<table id="campaigns">
<tr>
<th>Name</th>
<th>Status</th>
</tr>
<tr>
<td>first data</td>
</tr>
<tr data-id="1">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="2">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="3">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT edit</td>
</tr>
<tr data-id="4">
<td>another data</td>
</tr>
<tr data-id="5">
<td>next data</td>
</tr>
</table>
这就是我在实习期间的做法
this.remote
.findAllByXpath("//*[@id='campaigns']/tr"") // get allitem from list
.then(function (options) {
return Promise.all(options.map(function (option) {
return option.getVisibleText()
.then(function (text) {
if (text.includes("intern test")) { // checked whether the value is exist
option.click(); // click the value
}
return text;
})
}))
})
我的要求只是单击一个包含“实习生测试”的文本。 这段代码看起来不错,但实际情况是,当 intern 已经单击 if 语句中的第一个元素时,下一个元素似乎也将执行单击并使该元素失效。 当它找到第一个元素时,如何停止此循环并继续?
感谢您提供的任何帮助
无需遍历所有元素即可找到第一个包含文本的元素"intern test"
使用 findAllByXpath
尝试以下 XPath(我不知道 Javascript - selenium,因此,如果需要请更正语法):
//table[@id='campaigns']/tbody/tr/td[contains(text(),'intern test')]/..
returns 所有 tr
元素的文本包含 intern test
在 table 内,id 为 campaigns
.
使用索引,例如 0, 1, 2
来匹配包含 intern test
first, second and third
个元素