Как найти активные даты из ui-datepicker, используя Selenium и Java - PullRequest
1 голос
/ 05 июля 2019

Я пытаюсь получить активные даты из ui-datepicker, некоторые из них недоступны для выбора ui-datepicker, в то время как другие доступны date_class. Я хотел бы создать список или массив с днями, которые помечены как availabledates_class. Я включу HTML-код для пользовательского интерфейса выбора даты.

<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" style="position: absolute; top: 358px; left: 68px; z-index: 4; display: block;">
  <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">
    <a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="Prev"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
    <a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="Next"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
    <div class="ui-datepicker-title"><span class="ui-datepicker-month">July</span>&nbsp;<span class="ui-datepicker-year">2019</span></div>
  </div>
  <table class="ui-datepicker-calendar">
    <thead>
      <tr>
        <th scope="col" class="ui-datepicker-week-end"><span title="Sunday">Su</span></th>
        <th scope="col"><span title="Monday">Mo</span></th>
        <th scope="col"><span title="Tuesday">Tu</span></th>
        <th scope="col"><span title="Wednesday">We</span></th>
        <th scope="col"><span title="Thursday">Th</span></th>
        <th scope="col"><span title="Friday">Fr</span></th>
        <th scope="col" class="ui-datepicker-week-end"><span title="Saturday">Sa</span></th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">&nbsp;</td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">1</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">2</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">3</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">4</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled  ui-datepicker-today"><span class="ui-state-default">5</span></td>
        <td class=" ui-datepicker-week-end  availabledates_class ui-datepicker-current-day" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default ui-state-active" href="#">6</a></td>
      </tr>
      <tr>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">7</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">8</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">9</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">10</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">11</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">12</span></td>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">13</span></td>
      </tr>
      <tr>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">14</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">15</span></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">16</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">17</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">18</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">19</a></td>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">20</span></td>
      </tr>
      <tr>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">21</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">22</span></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">23</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">24</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">25</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">26</a></td>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">27</span></td>
      </tr>
      <tr>
        <td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">28</span></td>
        <td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">29</span></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">30</a></td>
        <td class="  availabledates_class" data-handler="selectDay" data-event="click" data-month="6" data-year="2019"><a class="ui-state-default" href="#">31</a></td>
        <td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">&nbsp;</td>
        <td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">&nbsp;</td>
        <td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled">&nbsp;</td>
      </tr>
    </tbody>
  </table>
</div>

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Для обработки динамического элемента используйте WebDriverWait и visibilityOfAllElementsLocatedBy и следующий xpath.

WebDriverWait wait = new WebDriverWait(driver, 30);
List<WebElement> elemnts=wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//table[@class='ui-datepicker-calendar']//td[contains(@class,'availabledates_class')]/a")));

        for(int i=0; i<elemnts.size(); i++)
        {
            System.out.println(elemnts.get(i).getText());

        }

Следует распечатать весь доступный день.

6
16
17
18
19
23
24
25
26
30
31
0 голосов
/ 05 июля 2019

Вот xpath, который вы должны использовать.

//table[@class='ui-datepicker-calendar']//td[@data-handler='selectDay]

Чтобы сохранить все доступные даты в списке, сделайте следующее.

List<WebElement> availableDateElems= driver.findElements(By.xpath("//table[@class='ui-datepicker-calendar']//td[@data-handler='selectDay]"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...