I am unsure how to go about getting a particular element that will not always be in the same xpath location. Here is a snippet of HTML to explain what I am getting at.
> <div class="grid-canvas" style="height: 120px; width: 705px;">
<div class="ui-widget-content slick-row even" row="0" style="top:0px"> <div class="slick-cell l0 r0 center"><span class="checkbox ui-corner-all"><span class="checked"></span></span> </div> <div class="slick-cell l1 r1" title=""><span class="rateCodeSpacer" style="width:10px"></span><span class="statusActive">EDITDUPRC</span></div> <div class="slick-cell l2 r2">H+P</div> <div class="slick-cell l3 r3" title=""></div> <div class="slick-cell l4 r4">Load Rates <br>$N/A</div> <div class="slick-cell l5 r5 center">2022-01-01 00:00:00 <br>N/A</div> <div class="slick-cell l6 r6 center" title=""></div> <div class="slick-cell l7 r7" title=""> <form class="result-action" action="" method="post"> <div class="ratecodes-action" style="display: block;"> <select name="action"> <option value="edit">Edit Rate Code</option> <option value="duplicate-ratecode">Duplicate Rate Code</option> <option value="editAllocationsRestrictions">Edit Availability</option> <option value="manage-profile">Manage Rates</option> <option value="add-child">Add Sub Rate Code</option> <option value="room-map">Room Map</option> </select> <input type="hidden" name="rateCodeId" value="1617346"> <input type="submit" value="Go"> </div> <div class="rates-action displayNone" style="display: none;"> <input onclick="window.open('https://extranet.bookitdev.com/manage_rate_profile.php?rateCodeId=1617346');" type="button" value="Manage Rates"> </div> </form> </div> </div> <div class="ui-widget-content slick-row odd" row="1" style="top:40px"> <div class="slick-cell l0 r0 center" title=""><span class="checkbox ui-corner-all"><span class="checked"></span></span></div> <div class="slick-cell l1 r1" title=""><span class="rateCodeSpacer" style="width:10px"></span><span class="statusActive">AUTOTESTRE</span></div> <div class="slick-cell l2 r2">H+P</div> <div class="slick-cell l3 r3" title="Automated Test Base Rate Code">Automated Test Base Rate Code</div> <div class="slick-cell l4 r4">Load Rates <br>$N/A</div> <div class="slick-cell l5 r5 center" title="2022-01-01 00:00:00 N/A">2022-01-01 00:00:00 <br>N/A</div> <div class="slick-cell l6 r6 center" title=""></div> <div class="slick-cell l7 r7"> <form class="result-action" action="" method="post"> <div class="ratecodes-action" style="display: block;"> <select name="action"> <option value="edit">Edit Rate Code</option> <option value="duplicate-ratecode">Duplicate Rate Code</option> <option value="editAllocationsRestrictions">Edit Availability</option> <option value="manage-profile">Manage Rates</option> <option value="add-child">Add Sub Rate Code</option> <option value="room-map">Room Map</option> </select> <input type="hidden" name="rateCodeId" value="1617345"> <input type="submit" value="Go"> </div> <div class="rates-action displayNone" style="display: none;"> <input onclick="window.open('https://extranet.bookitdev.com/manage_rate_profile.php?rateCodeId=1617345');" type="button" value="Manage Rates"> </div> </form> </div> </div> <div class="ui-widget-content slick-row even" row="2" style="top:80px"> <div class="slick-cell l0 r0 center" title=""><span class="checkbox ui-corner-all"><span class="checked"></span></span></div> <div class="slick-cell l1 r1" title=""><span class="rateCodeSpacer" style="width:0px"></span><span class="slick-group-toggle collapsed"></span><span class="statusActive">BASE</span></div> <div class="slick-cell l2 r2">H+P</div> <div class="slick-cell l3 r3" title="Migrated base rate inventory">Migrated base rate inventory</div> <div class="slick-cell l4 r4" title="">Load Rates <br>$96.00</div> <div class="slick-cell l5 r5 center" title="2015-01-27 00:00:00 N/A">2015-01-27 00:00:00 <br>N/A</div> <div class="slick-cell l6 r6 center" title="">2016-11-03 <br>N/A</div> <div class="slick-cell l7 r7" title=""> <form class="result-action" action="" method="post"> <div class="ratecodes-action" style="display: block;"> <select name="action"> <option value="edit">Edit Rate Code</option> <option value="duplicate-ratecode">Duplicate Rate Code</option> <option value="editAllocationsRestrictions">Edit Availability</option> <option value="manage-profile">Manage Rates</option> <option value="add-child">Add Sub Rate Code</option> <option value="room-map">Room Map</option> </select> <input type="hidden" name="rateCodeId" value="147665"> <input type="submit" value="Go"> </div> <div class="rates-action displayNone" style="display: none;"> <input onclick="window.open('https://extranet.bookitdev.com/manage_rate_profile.php?rateCodeId=147665');" type="button" value="Manage Rates"> </div> </form> </div> </div>
The elements I am after (select option and Go button for ‘AUTOTESTRE’) currently has an xpath of //[@id=“results”]/div[5]/div/div[2]/div[8]/form/div[1]/select and //[@id=“results”]/div[5]/div/div[2]/div[8]/form/div[1]/input[2] respectively.
Now, where it is at (row in those divs is //*[@id=“results”]/div[5]/div/div[2] could be shifted up or down, so div[2] is dynamic. How can I make sure that I am always selecting those no matter it’s position?