Erdne Htábrob
Erdne Htábrob

Reputation: 879

Select link by table with selenium

I have the following document structure:

<table class="month1" cellspacing="0" border="0" cellpadding="0"> 
<tbody class="">
 <tr><td><div time="1511650969812" data-tooltip="" class="day lastMonth  valid">26</div></td><td><div time="1511737369812" data-tooltip="" class="day lastMonth  valid">27</div></td><td><div time="1511823769812" data-tooltip="" class="day lastMonth  valid">28</div></td><td><div time="1511910169812" data-tooltip="" class="day lastMonth  valid">29</div></td><td><div time="1511996569812" data-tooltip="" class="day lastMonth  valid">30</div></td><td><div time="1512082969812" data-tooltip="" class="day toMonth  valid">1</div></td><td><div time="1512169369812" data-tooltip="" class="day toMonth  valid">2</div></td></tr>
 <tr><td><div time="1512255769812" data-tooltip="" class="day toMonth  valid">3</div></td><td><div time="1512342169812" data-tooltip="" class="day toMonth  valid">4</div></td><td><div time="1512428569812" data-tooltip="" class="day toMonth  valid">5</div></td><td><div time="1512514969812" data-tooltip="" class="day toMonth  valid">6</div></td><td><div time="1512601369812" data-tooltip="" class="day toMonth  valid">7</div></td><td><div time="1512687769812" data-tooltip="" class="day toMonth  valid">8</div></td><td><div time="1512774169812" data-tooltip="" class="day toMonth  valid">9</div></td></tr>
 <tr><td><div time="1512860569812" data-tooltip="" class="day toMonth  valid">10</div></td><td><div time="1512946969812" data-tooltip="" class="day toMonth  valid">11</div></td><td><div time="1513033369812" data-tooltip="" class="day toMonth  valid">12</div></td><td><div time="1513119769812" data-tooltip="" class="day toMonth  valid real-today">13</div></td><td><div time="1513206169812" data-tooltip="" class="day toMonth  valid">14</div></td><td><div time="1513292569812" data-tooltip="" class="day toMonth  valid">15</div></td><td><div time="1513378969812" data-tooltip="" class="day toMonth  valid">16</div></td></tr>
 <tr><td><div time="1513465369812" data-tooltip="" class="day toMonth  valid">17</div></td><td><div time="1513551769812" data-tooltip="" class="day toMonth  valid">18</div></td><td><div time="1513638169812" data-tooltip="" class="day toMonth  valid">19</div></td><td><div time="1513724569812" data-tooltip="" class="day toMonth  valid">20</div></td><td><div time="1513810969812" data-tooltip="" class="day toMonth  valid">21</div></td><td><div time="1513897369812" data-tooltip="" class="day toMonth  valid">22</div></td><td><div time="1513983769812" data-tooltip="" class="day toMonth  valid">23</div></td></tr>
 <tr><td><div time="1514070169812" data-tooltip="" class="day toMonth  valid">24</div></td><td><div time="1514156569812" data-tooltip="" class="day toMonth  valid">25</div></td><td><div time="1514242969812" data-tooltip="" class="day toMonth  valid">26</div></td><td><div time="1514329369812" data-tooltip="" class="day toMonth  valid">27</div></td><td><div time="1514415769812" data-tooltip="" class="day toMonth  valid">28</div></td><td><div time="1514502169812" data-tooltip="" class="day toMonth  valid">29</div></td><td><div time="1514588569812" data-tooltip="" class="day toMonth  valid">30</div></td></tr>
 <tr><td><div time="1514674969812" data-tooltip="" class="day toMonth  valid">31</div></td><td><div time="1514761369812" data-tooltip="" class="day nextMonth  valid">1</div></td><td><div time="1514847769812" data-tooltip="" class="day nextMonth  valid">2</div></td><td><div time="1514934169812" data-tooltip="" class="day nextMonth  valid">3</div></td><td><div time="1515020569812" data-tooltip="" class="day nextMonth  valid">4</div></td><td><div time="1515106969812" data-tooltip="" class="day nextMonth  valid">5</div></td><td><div time="1515193369812" data-tooltip="" class="day nextMonth  valid">6</div></td></tr></tbody> </table>

Essentially a table, listing all the days of the pre-selected month. I need selenium with python to select and click on one of these days.

I've tried several options, currently I am experimenting with something like:

days = driver.find_element_by_class_name("month1")
days.find_element_by_xpath(".select[@td='6']").click()

The problem is that I can't just select based on a single attribute, since there's an identical month2 table in the webpage. I need the link to refer to month1.

Upvotes: 1

Views: 43

Answers (1)

alecxe
alecxe

Reputation: 473873

You can "scope" your search inside the "month1" by prepending your expression with .//:

days.find_element_by_xpath(".//td[div='6']").click()

Note that here I'm checking the text of the div element which holds the day value for a cell.

Upvotes: 2

Related Questions