java - Selenium Webdriver 单击特定的 WebElement

标签 java selenium selenium-webdriver

我有以下 html,想要 tdclass tree-label-name ng-bindingtext( ) 审批者被选择(点击)

HTML:

<?xml version="1.0" encoding="UTF-8"?>
<treecontrol tree-model="vm.homeStats" expand-level="0" on-selection="vm.selectStatsNode(node)" on-node-toggle="vm.toggleTreeNode(node, expanded)" expanded-nodes="vm.expandedNodes" selected-node="vm.selectedNode" class="ng-isolate-scope">
   <ul class="ng-scope">
      <li ng-repeat="node in node.children | filter:filterExpression:filterComparator" ng-class="headClass(node)" class="ng-scope tree-collapsed tree-selected">
         <i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)"></i><i class="tree-leaf-head "></i>
         <div class="tree-label  tree-selected" ng-class="selectedClass()" ng-click="selectNodeLabel(node)" tree-transclude="">
            <table class="ng-scope">
               <tbody>
                  <tr>
                     <td class="tree-label-icon"><img bf-image-path="user" class="tree-icon" src="/Assets/img/icons/user.png"></td>
                     <td class="tree-label-name ng-binding">
                        Strydom, AJ (Rico)<br>
                        <progress-bar ng-if="::!node.isFolder" value="6" max-value="230" class="ng-scope">
                           <div class="progress-bar" ng-style="barStyles">
                              <div class="progress-bar-value" ng-style="valueStyles" style="width: 2.6087%;"></div>
                           </div>
                        </progress-bar>
                     </td>
                     <td width="30" class="text-right">
                      <strong class="process-bar-total ng-binding ng-scope" ng-if="::!node.isFolder">6</strong><!-- end ngIf: ::!node.isFolder -->
                     </td>
                  </tr>
               </tbody>
            </table>
         </div>
      </li>
      <li ng-repeat="node in node.children | filter:filterExpression:filterComparator" ng-class="headClass(node)" class="ng-scope tree-collapsed">
         <i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)"></i><i class="tree-leaf-head "></i>
         <div class="tree-label " ng-class="selectedClass()" ng-click="selectNodeLabel(node)" tree-transclude="">
            <table class="ng-scope">
               <tbody>
                  <tr>
                     <td class="tree-label-icon"><img bf-image-path="team" class="tree-icon" src="/Assets/img/icons/team.png"></td>
                     <td class="tree-label-name ng-binding">
                        Approver<br>
                        <progress-bar ng-if="::!node.isFolder" value="1" max-value="230" class="ng-scope">
                           <div class="progress-bar" ng-style="barStyles">
                              <div class="progress-bar-value" ng-style="valueStyles" style="width: 0.434783%;"></div>
                           </div>
                        </progress-bar>
                     </td>
                     <td width="30" class="text-right">
                     <strong class="process-bar-total ng-binding ng-scope" ng-if="::!node.isFolder">1</strong><!-- end ngIf: ::!node.isFolder -->
                     </td>
                  </tr>
               </tbody>
            </table>
         </div>
      </li>
      <li ng-repeat="node in node.children | filter:filterExpression:filterComparator" ng-class="headClass(node)" class="ng-scope tree-collapsed">
         <i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)"></i><i class="tree-leaf-head "></i>
         <div class="tree-label " ng-class="selectedClass()" ng-click="selectNodeLabel(node)" tree-transclude="">
            <table class="ng-scope">
               <tbody>
                  <tr>
                     <td class="tree-label-icon"><img bf-image-path="team" class="tree-icon" src="/Assets/img/icons/team.png"></td>
                     <td class="tree-label-name ng-binding">
                        Assigner<br>
                        <progress-bar ng-if="::!node.isFolder" value="230" max-value="230" class="ng-scope">
                           <div class="progress-bar" ng-style="barStyles">
                              <div class="progress-bar-value" ng-style="valueStyles" style="width: 100%;"></div>
                           </div>
                        </progress-bar>
                     </td>
                     <td width="30" class="text-right">
                      <strong class="process-bar-total ng-binding ng-scope" ng-if="::!node.isFolder">230</strong><!-- end ngIf: ::!node.isFolder -->
                     </td>
                  </tr>
               </tbody>
            </table>
         </div>
      </li>
   </ul>
</treecontrol>

这是我的代码,它似乎没有执行点击操作。

WebElement inboxTypeToSelect =  webdriver.findElement(By.xpath("//treecontrol[@class='ng-isolate-scope']/ul/li/div/table/tbody/tr/td[@class='tree-label-name ng-binding' and normalize-space(text() = '" +  inboxType + "')]"));
Actions action = new Actions(webdriver);
action.click(inboxTypeToSelect);
action.perform();

传递给 inboxType 的值为 Approver,因此 xpath 为:

//treecontrol[@class='ng-isolate-scope']/ul/li/div/table/tbody/tr/td[@class='tree-label-name ng-binding' and normalize-space(text() = 'Approver')]

知道为什么不执行该操作吗?

最佳答案

尝试以下 xpath:

//tr/td[contains(text(),"Approver")]

尝试如下:

 WebElement inboxTypeToSelect =  webdriver.findElement(By.xpath("//tr/td[contains(text(),"Approver")]"));
    Actions action = new Actions(webdriver);
    action.click(inboxTypeToSelect).perform();

在click方法之后调用perform()。

使用点击 WebElement 本身来代替操作链。

WebElement inboxTypeToSelect =  webdriver.findElement(By.xpath("//tr/td[contains(text(),"Approver")]"));
inboxTypeToSelect.click();

关于java - Selenium Webdriver 单击特定的 WebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40532428/

相关文章:

java - HttpServletRequest 属性和参数获取 "lost"?符合 1.6 JavaEE 规范?

testing - Selenium IDE - 输出中的脚本执行时间

javascript - 如何使用 javascript 取消选择 css 样式?

selenium - 如何使用 Selenium Webdriver 下载任何文件并将其保存到所需位置

javascript - Selenium Webdriver xpath 查找元素

java - 微服务——它们之间的通信

java - 'while' 语句无法在不抛出异常的情况下完成 - Android

java - Android: fragment 生命周期中的方法

java - 为什么有些元素存在但不可交互/显示?

selenium - Selenium Grid2:并行测试同时在同一浏览器上运行