如何仅单击未选中的按钮 webdriver Java

How to click only unselected buttons webdriver Java

这就是我目前所做的,试图让它只点击未选中的元素,但它也点击选中的元素。它似乎忽略了 if 语句。

WebElement parent = driver.findElement(By.cssSelector(".tutor-schedule-tablet"));  
List<WebElement> children = parent.findElements(By.cssSelector("button.md-primary.md-button.ng-scope"));  


  for (int i = 0; i < children.size(); i++) { 
      if(!children.get(i).isSelected())
      {
          children.get(i).click();
      }
  }  

点击此

<button tabindex="0" class="md-primary md-button ng-scope timeinterval-selected" ng-class="{ 'timeinterval-selected' : weekinterval.timeIntervals[sectionIndex].selected, 'timeinterval-select-disabled' : weekinterval.timeIntervals[sectionIndex].isPastDate }" ng-click="itemClicked_Weekly(weekinterval.timeIntervals[sectionIndex])" ng-if="!weekinterval.timeIntervals[sectionIndex].disabled &amp;&amp; !weekinterval.timeIntervals[sectionIndex].isPastDate">
                    <span class="ng-binding ng-scope">&nbsp;</span>
                    <div class="md-ripple-container"></div>
                    </button>

这是未点击的

<button tabindex="0" class="md-primary md-button ng-scope" ng-class="{ 'timeinterval-selected' : weekinterval.timeIntervals[sectionIndex].selected, 'timeinterval-select-disabled' : weekinterval.timeIntervals[sectionIndex].isPastDate }" ng-click="itemClicked_Weekly(weekinterval.timeIntervals[sectionIndex])" ng-if="!weekinterval.timeIntervals[sectionIndex].disabled &amp;&amp; !weekinterval.timeIntervals[sectionIndex].isPastDate">
                    <span class="ng-binding ng-scope">&nbsp;</span>
                    <div class="md-ripple-container"></div>
                    </button>

这是 HTML

的其余部分
<div class="tutor-schedule-tablet" hide-sm="">

    <h3></h3>
    <div class="schedule-day-navigation md-toolbar-tools" layout="row"></div>
    <table class="tutor-schedule tutor-schedule-week" cellspacing="1">
        <thead></thead>
        <tbody>
            <!--

             ngRepeat: timeinterval in weekintervals[0].timeIn…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals"></tr>
            <!--

             end ngRepeat: timeinterval in weekintervals[0].ti…

            -->
            <tr class="ng-scope" ng-init="sectionIndex = $index" ng-repeat="timeinterval in weekintervals[0].timeIntervals">
                <td id="timeintrval_4pm" class="timeinterval-name text-center ng-binding" scroll-if="timeinterval.name == '12pm'"></td>
                <!--

                 ngRepeat: weekinterval in weekintervals 

                -->
                <td class="ng-scope" ng-repeat="weekinterval in weekintervals">
                    <!--

                    {{weekinterval.timeIntervals[$parent.$index].name}…

                    -->
                    <!--

                     ngIf: weekinterval.timeIntervals[sectionIndex].di…

                    -->
                    <!--

                     ngIf: !weekinterval.timeIntervals[sectionIndex].d…

                    -->
                    <!--

                     ngIf: !weekinterval.timeIntervals[sectionIndex].d…

                    -->
                    <button class="md-primary md-button ng-scope timeinterval-selected" ng-if="!weekinterval.timeIntervals[sectionIndex].disabled && !weekinterval.timeIntervals[sectionIndex].isPastDate" ng-click="itemClicked_Weekly(weekinterval.timeIntervals[sectionIndex])" ng-class="{ 'timeinterval-selected' : weekinterval.timeIntervals[secti…led' : weekinterval.timeIntervals[sectionIndex].isPastDate }" tabindex="0"></button>

<!--

 end ngIf: !weekinterval.timeIntervals[sectionInde…

-->

看过了。可能 Selenium 不知道它是否选择了。当它被选中时,我看到 class 属性发生了变化。所以,这可能是您最好的选择

WebElement parent = driver.findElement(By.cssSelector(".tutor-schedule-tablet"));  
List<WebElement> children = parent.findElements(By.cssSelector("button.md-primary.md-button.ng-scope"));  


  for (int i = 0; i < children.size(); i++) { 
      if(!children.get(i).getAttribute("class").contains("timeinterval-selected"))
      {
          children.get(i).click();
      }
  } 

注意:未经测试的代码和语法可能有一点偏差