我们说我有以下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;
})
}))
})
我的要求只是点击一个包含&#34; 实习生测试&#34;的文字。 这段代码似乎很好,但是当实习生已经单击if语句中的第一个元素时,下一个元素似乎也将执行单击并使元素失效。 如何停止此循环并在找到第一个元素时继续?
感谢您提供的任何帮助
答案 0 :(得分:0)
没有必要通过所有元素来查找包含文本的第一个元素&#34;实习测试&#34;
使用findAllByXpath
尝试以下XPath(我不知道Javascript - selenium,所以,如果需要,请更正语法):
//table[@id='campaigns']/tbody/tr/td[contains(text(),'intern test')]/..
返回ID为tr
的表格中包含intern test
文字的所有campaigns
元素。
使用索引(例如0, 1, 2
)来匹配包含first, second and third
intern test
个元素