2017-04-15 4 views
0

die zur Verfügung stehenden Tage hat eine Klasse .calendarCellOpen:Ich habe einen Kalender Picker. Wie wähle ich den verfügbaren Tag mit Selenium und Python?

table.calendario .calendarCellOpen input { 

} 

es hier ist der Kalender 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; 
    } 

Die Sache ist, dass ich (Klick mit Selen) Tag auswählen möchten verfügbar (egal welcher Tag). Nur ein Tag, der verfügbar zu sein scheint (grün). Hier

ist der Kalender:

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() 

Dieser einiger Code i

gemacht

machte ich zurück und vorwärts, weil th einzige Möglichkeit, den Kalender zu laden ..

Dies ist der HTML-Code des Kalenders:

<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> 
+0

Bitte senden Sie einen Link auf die Seite, wenn Sie können. Das CSS hilft nicht wirklich, was wir sehen müssen, ist der HTML-Code der Elemente, auf die Sie klicken möchten. – JeffC

+0

Ok .. fertig .. Prost – TOMAS

Antwort

0

Das ist, was ich zu tun gewinnen, aber ich bin nicht ganz sicher, dass dies funktionieren wird:

  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() 
Verwandte Themen