Javascript 如何在intern中打破元素循环
假设我有以下DOM结构Javascript 如何在intern中打破元素循环,javascript,selenium,selenium-webdriver,intern,Javascript,Selenium,Selenium Webdriver,Intern,假设我有以下DOM结构 <table id="campaigns"> <tr> <th>Name</th> <th>Status</th> </tr> <tr> <td>first data</td> </tr> <tr data-id="1"> <td>inter
<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>
我的要求是只需单击包含“实习生测试”的文本之一。
这段代码看起来不错,但实际情况是,当intern已经单击if语句中的第一个元素时,下一个元素似乎也将执行单击并使该元素失效。
当循环找到第一个元素时,如何停止循环并继续
感谢您提供的任何帮助无需遍历所有元素即可找到包含文本“intern test”的第一个元素 使用
findAllByXpath
尝试以下XPath(我不知道Javascript-selenium,因此,如果需要,请更正语法):
返回所有tr
元素,其文本在id为活动的表中包含intern test
使用索引,如0,1,2
来匹配包含内部测试的第一、第二和第三个元素
无需遍历所有元素来查找包含文本“intern test”的第一个元素
使用findAllByXpath
尝试以下XPath(我不知道Javascript-selenium,因此,如果需要,请更正语法):
返回所有tr
元素,其文本在id为活动的表中包含intern test
使用索引,如0,1,2
来匹配第一、第二和第三个元素,这些元素包含实习测试
我不确定我是否理解您的问题。你能重新措辞吗?要单击的元素是多个还是多个<代码>承诺。所有
将等待所有承诺得到解决,从而让它运行。如果您只想等待一个问题得到解决,请查看Promise.race()
。感谢您的回复。我只想单击满足if语句的第一个元素,而不是它找到的第一个元素。Promise.race不会满足if语句,因为它将使用第一个元素。我不确定我是否理解您的问题。你能重新措辞吗?要单击的元素是多个还是多个<代码>承诺。所有
将等待所有承诺得到解决,从而让它运行。如果您只想等待一个问题得到解决,请查看Promise.race()
。感谢您的回复。我只想单击满足if语句的第一个元素,而不是它找到的第一个元素。Promise.race不会满足if语句,因为它将使用第一个元素感谢您的响应。但我的要求是单击tr元素,而不是td元素,您所建议的xpath将无助于满足该要求编辑我的答案。请试一试。刚刚添加“/…”以获得家长,即“tr”谢谢。这对我有帮助。需要在XPath上刷我的技能谢谢你的回复。但我的要求是单击tr元素,而不是td元素,您所建议的xpath将无助于满足该要求编辑我的答案。请试一试。刚刚添加“/…”以获得家长,即“tr”谢谢。这对我有帮助。需要提高我的xpath技能吗
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;
})
}))
})
//table[@id='campaigns']/tbody/tr/td[contains(text(),'intern test')]/..