如何在实习生

时间:2016-12-09 07:49:16

标签: 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>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语句中的第一个元素时,下一个元素似乎也将执行单击并使元素失效。 如何停止此循环并在找到第一个元素时继续?

感谢您提供的任何帮助

1 个答案:

答案 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个元素