Javascript Selenium Webdriver-仅具有精确值标识的元素,js/html

Javascript Selenium Webdriver-仅具有精确值标识的元素,js/html,javascript,java,jquery,html,selenium,Javascript,Java,Jquery,Html,Selenium,我想知道一件事。 有一个包含两条记录的UI html表,并且只希望单击具有精确值的记录 例如: 选择tr数据用户所在的记录,如“testuser1” 有没有可能用简单的方法做到这一点 <table class="table table-striped"> <thead> <tr> <th> <input type="checkbox" disabled="">

我想知道一件事。 有一个包含两条记录的UI html表,并且只希望单击具有精确值的记录

例如: 选择tr数据用户所在的记录,如“testuser1”

有没有可能用简单的方法做到这一点

<table class="table table-striped">
   <thead>
      <tr>
         <th>
            <input type="checkbox" disabled="">
         </th>
         <th data-sort="status">Status
            <i class="fa fa-sort-"></i>
         </th>
         <th data-sort="name">Name
            <i class="fa fa-sort-"></i>
         </th>
         <th data-sort="position">Position
            <i class="fa fa-sort-"></i>
         </th>
         <th data-sort="userCode">ID
            <i class="fa fa-sort-asc"></i>
         </th>
         <th data-sort="email">e-mail
            <i class="fa fa-sort-"></i>
         </th>
      </tr>
   </thead>
   <tbody>
      <tr data-user="testuser1">
         <td>
            <input type="checkbox" disabled="">
         </td>
         <td>
            <div class="toggle btn btn-default off btn-sm" data-toggle="toggle" style="width: 76px; height: 30px;">
               <input data-user-code="a.anpilov" class="status-toggle" type="checkbox" data-toggle="toggle" data-on="Active" data-off="Inactive" data-size="small">
               <div class="toggle-group">
                  <label class="btn btn-primary btn-sm toggle-on">Active</label>
                  <label class="btn btn-default btn-sm active toggle-off">Inactive</label><span class="toggle-handle btn btn-default btn-sm"></span></div>
            </div>
         </td>
         <td class="plain">
            testuser1
         </td>
         <td class="plain">
            testuser1
         </td>
         <td class="plain">
            testuser1
         </td>
         <td class="plain">
            testuser1
         </td>
      </tr>
      <tr data-user="testuser2">
         <td>
            <input type="checkbox" disabled="">
         </td>
         <td>
            <div class="toggle btn btn-default off btn-sm" data-toggle="toggle" style="width: 76px; height: 30px;">
               <input data-user-code="a.puchaujara" class="status-toggle" type="checkbox" data-toggle="toggle" data-on="Active" data-off="Inactive" data-size="small">
               <div class="toggle-group">
                  <label class="btn btn-primary btn-sm toggle-on">Active</label>
                  <label class="btn btn-default btn-sm active toggle-off">Inactive</label><span class="toggle-handle btn btn-default btn-sm"></span></div>
            </div>
         </td>
         <td class="plain">
            testuser2
         </td>
         <td class="plain">
            testuser2
         </td>
         <td class="plain">
            testuser2
         </td>
         <td class="plain">
            testuser2
         </td>
      </tr>
   </tbody>
</table>

但不起作用…:(

也许您可以使用value属性使用xpath表达式。例如,要选择具有id和value的特定元素并单击它:

driver.findElement(By.xpath("//*[@id='" + yourId + "' and @value='" + yourValue + "']")).click();
或者一个里面有文本的td(注意td标签没有值,它里面有文本):

如果您可以构建一个唯一的xpath来标识您要查找的内容,那么即使您不知道id或标记类型,这也是您最好的选择。

主题关闭。 最终解决方案:


getDriver().findelelement(By.xpath(“//tr[@data user='testuser1']”)。单击();

对不起,我是webdriver的新手,您提供的解决方案不起作用,我不确定我做错了什么。我更新了上述代码(可能上次错过了一些内容)。你能写下准备好的示例吗?抱歉,我用文本更新了td的第二个示例。它不正确。我认为现在可以了。仍然不起作用。我正在做类似的事情:getDriver().findElement(By.xpath(//td[text()='testuser1']));很抱歉,我忘记了单击操作,我已再次更新了我的解决方案。与其使用grave字符将一堆行格式化为代码,不如将每行缩进4个空格,然后将其格式化为一个块。它看起来更整洁。我还建议使用在线HTML格式化程序正确(快速)地缩进HTML使其更易于理解。您还可以使用CSS选择器…
getDriver().findElement(By.cssSelector(“tr[data user='testuser1']))。单击();
XPath通常执行速度较慢。
driver.findElement(By.xpath("//*[@id='" + yourId + "' and @value='" + yourValue + "']")).click();
driver.findElement(By.xpath("//td[text()='" + yourTdText + "']")).click();