我有一个日历选择器。如何用Selenium和Python选择可用的日期?

问题描述 投票:0回答:1

可用的日子有一个类.calendarCellOpen

table.calendario .calendarCellOpen input {

}

这是日历css:

    #calwrapper
    {
    min-height:230px;  
    margin-top:10px;  
    }


    #calendar
    {
    float:left;
    margin-left: 15px; /*Daniele 10-04-2014*/
    }


span.calendario
{
    display:block;
    margin:0;
}

table.fasce
{
    margin-left:20px;
}

table.fasce th
{
    background-image: url( '../images/tab_body.png' );
    background-repeat: repeat-x;
    font-size:12px;
}

table.fasce tr
{
    border-bottom: #f5f4e7 thin dotted;
}

table.calendario
{
    border-top: 0px !important;
}

table.calendario, table.fasce
{
    width: 300px;
    background-color: White !important;
    font-size: 15px;
    border-right: #f5f4e7 1px solid !important;
    border-left: #f5f4e7 1px solid !important;
    border-bottom: #f5f4e7 1px solid !important;
}

table.calendario td, table.fasce td
{
    text-align:center;
}

table.calendario .calTitolo
{
    background-image: url( '../images/tab_body.png' );
    background-repeat: repeat-x;
    margin: 0px !important;
    padding: 0px !important;
    font-size:12px;
}

table.calendario .calTitolo td
{
    padding:0px 5px 0px 5px;
    width:14.3%;
}

table.calendario .calDayHeader /* RIGA */
{   
    background-color:#FCFBF7;
    font-size:12px;
}

table.calendario .otherMonthDay
{
    color: #C0C0C0;
}

table.calendario .cellaSelezionata /* CELLA */
{   
    background-color:#EDEBD5 !important;    
    border-collapse:collapse !important;
    font-weight:bold;   
}

table.calendario .calendarCellOpen input
{
    color:#208020 !important;   /*High availability (green)*/
    font-weight:bold;       
}

table.calendario .calendarCellRed
{
    color:Red !important;   /*noe availability*/ 
    font-weight:bold;   
}

table.calendario .calendarCellMed input
{
    color:#F09643 !important;   /*Disponibilità media*/
    font-weight:bold;   
}


.pulsanteCalendario
{    
    border: 0px;
    background-color: Transparent;
    cursor: pointer;
    padding: 0px 0px 0px 0px;
    margin: 0px;  
    height:20px;
    width:100%;
    overflow:visible; 
    text-align:center;
    font-size:16px;
}

.pulsanteCalendario:hover
{
    text-decoration:underline;
}

#legend
{
    margin-bottom:8px;
    width:100%;    
}

#legend ul
{
    list-style-type:none;
}

   #legend ul li
   {
    display:inline;
    margin-left:20px;
   }

问题是我想选择(用Selenium点击它)可用的日期(无论哪一天都没关系。)任何一天看似可用(绿色)。

这是日历:

enter image description here

 elementos = driver.find_elements_by_class_name("calendarCellOpen")
 while True:

            if elementos:
                driver.find_element_by_class_name("calendarCellOpen").click()
                driver.find_element_by_id("ctl00_ContentPlaceHolder1_acc_Calendario1_repFasce_ctl01_btnConferma").click() #confirm button
            else:

                driver.find_element_by_xpath("//input[@value='<']").click()  #back
                if elementos:
                    driver.find_element_by_class_name("calendarCellOpen").click()
                    driver.find_element_by_id("ctl00_ContentPlaceHolder1_acc_Calendario1_repFasce_ctl01_btnConferma").click()

                driver.find_element_by_xpath("//input[@value='>']").click() #forward
                if elementos:
                    driver.find_element_by_class_name("calendarCellOpen").click()
                    driver.find_element_by_id("ctl00_ContentPlaceHolder1_acc_Calendario1_repFasce_ctl01_btnConferma").click()

我做了一些代码

我后退和前进是因为这是重新加载日历的唯一方法。

这是日历的HTML:

<div id="calwrapper">
<div id="legend" style="padding-left:15px; margin-bottom:20px">


    <table style="width:90%; border-collapse:collapse; border: 0px">
    <tr style="line-height:15px">
        <td style="background-color:Red; width:80px; margin-right:10px">
        </td>

        <td style="width: 383px; padding-left:5px">
            Tutto occupato # all none available
        </td>

        <td style="background-color:#F09643; width:80px">
        </td>

        <td style="width: 450px; padding-left:5px">
            Media disponibilit&agrave; #half available
        </td>

        <td style="background-color:#058d08; width:80px">
        </td>

        <td style="width: 383px; padding-left:5px">
            Posti disponibili  #available
        </td>

        <td style="background-color:#000000; width:80px">
        </td>

        <td style="width: 383px; padding-left:5px">
            Non disponibile # none available
        </td>
    </tr>
</table>
</div>
<div id="calendar">
    <span id="ctl00_ContentPlaceHolder1_acc_Calendario1_myCalendario1" 
class="calendario">
<table class="calendario" summary="Summary" cellspacing="0">
<caption>Calendario eventi</caption>
<tr class="calTitolo">
<th>
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl01" 
value="&lt;" title="Clicca qui per andare al mese precedente" 
 class="pulsanteCalendario" />
</th>
<th colspan="5">
<span>agosto, 2017</span>
</th>
<th>
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl03" 
value=">" title="Clicca qui per andare al mese successivo" 
 class="pulsanteCalendario" />
</th>
</tr>
<tr>
<th class="calDayHeader" scope="col">lun</th>
<th class="calDayHeader" 
scope="col">mar</th>
<th class="calDayHeader" scope="col">mer</th>
<th class="calDayHeader" scope="col">gio</th>
<th class="calDayHeader" scope="col">ven</th>
<th class="calDayHeader" scope="col">sab</th>
<th class="calDayHeader" scope="col">dom</th>
</tr>
<tr>
<td title="Giorno non disponibile" class="otherMonthDay">31</td>
<td  title="Tutto occupato" class="calendarCellRed">1</td>
<td title="Giorno non disponibile" class="noSelectableDay">2</td>
<td title="Tutto occupato" class="calendarCellRed">3</td>
<td title="Tutto occupato" class="calendarCellRed">4</td>
<td title="Giorno non disponibile" class="noSelectableDay">5</td>
<td title="Giorno non disponibile" class="noSelectableDay">6</td>
</tr>
<tr>
<td title="Tutto occupato" class="calendarCellRed">7</td>
<td class="calendarCellOpen">
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl12" 
value="8" title="8 agosto 2017, Posti disponibili" 
class="pulsanteCalendario" />
</td>
<td class="calendarCellOpen">
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl12" 
value="8" title="8 agosto 2017, Posti disponibili" 
class="pulsanteCalendario" />
</td>
<td class="calendarCellOpen">
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl12" 
value="8" title="8 agosto 2017, Posti disponibili" 
class="pulsanteCalendario" />
</td>
<td class="calendarCellOpen">
<input type="submit" 
name="ctl00$ContentPlaceHolder1$acc_Calendario1$myCalendario1$ctl12" 
value="8" title="8 agosto 2017, Posti disponibili" 
class="pulsanteCalendario" />
</td>
<td title="Giorno non disponibile" class="noSelectableDay">9</td>
<td title="Giorno non disponibile" class="noSelectableDay">10</td>

</tr><tr>
<td title="Giorno non disponibile" class="noSelectableDay">14</td>
<td title="Giorno non disponibile" class="noSelectableDay">15</td>
<td title="Giorno non disponibile" class="noSelectableDay">16</td>
<td title="Giorno non disponibile" class="noSelectableDay">17</td>
<td title="Giorno non disponibile" class="noSelectableDay">18</td>
<td title="Giorno non disponibile" class="noSelectableDay">19</td>
<td title="Giorno non disponibile" class="noSelectableDay">20</td>
</tr><tr>
<td title="Giorno non disponibile" class="noSelectableDay">21</td>
<td title="Giorno non disponibile" class="noSelectableDay">22</td>
<td title="Giorno non disponibile" class="noSelectableDay">23</td>
<td title="Giorno non disponibile" class="noSelectableDay">24</td>
<td title="Giorno non disponibile" class="noSelectableDay">25</td>
<td title="Giorno non disponibile" class="noSelectableDay">26</td>
<td title="Giorno non disponibile" class="noSelectableDay">27</td>
</tr><tr>
<td title="Giorno non disponibile" class="noSelectableDay">28</td>
<td title="Giorno non disponibile" class="noSelectableDay">29</td>
<td title="Giorno non disponibile" class="noSelectableDay">30</td>
<td title="Giorno non disponibile" class="noSelectableDay">31</td>
<td title="Giorno non disponibile" class="otherMonthDay">1</td>
<td title="Giorno non disponibile" class="otherMonthDay">2</td>
<td title="Giorno non disponibile" class="otherMonthDay">3</td>
</tr></table></span>
</div>
<div id="orari" >
    <input type="hidden" 
 name="ctl00$ContentPlaceHolder1$acc_Calendario1$HiddenField1" 
 id="ctl00_ContentPlaceHolder1_acc_Calendario1_HiddenField1" />

</div>
</div>
python html css selenium testing
1个回答
0
投票

这是我要做的事情,但我不太确定这是否会起作用:

            while True:
            for dates in elementos:
                if dates.is_enabled():
                    dates.click()
                    driver.find_element_by_id("ctl00_ContentPlaceHolder1_acc_Calendario1_repFasce_ctl01_btnConferma").click()
            #if elementos > 0:
                #driver.find_element_by_class_name("calendarCellOpen").click()

                #else:

            driver.find_element_by_xpath("//input[@value='<']").click()
            driver.find_element_by_xpath("//input[@value='>']").click()
© www.soinside.com 2019 - 2024. All rights reserved.