我正在尝试查找并点击旅游网站座位布局中的“可用”座位。挑战是,可用座位没有唯一标识符,而“已阻止”(已预订)座位有一个“标题”形式(请参阅HTML)。我们如何使WebDriver跳过任何被阻止的座位,并在任何随机出现的座位布局(Pic)上点击任何“可用”座位?
HTML显示2个Blocked Seats(L2,L4)的结构和一个可用的座位(L3)
<div style="max-width:695px;">
<div class="GXXXXXXX" style="display: none;" aria-hidden="true">
<div class="GXXXXXXX">
<div class="GXXXXXXX"> </div>
<div class="GXXXXXXX">
<table>
<colgroup>
<tbody>
<tr>
<tr>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
Blocked Seat
<div class="GDXXXXXX GDXXXXX0" style="overflow:hidden;position:static;margin: 0 5px 5px 0;" title="Seat Name: L2 | Fare: Rs. 300.0">L2</div>
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
Available Seat
<div class="GXXXXXX GXXXXXX0" style="overflow:hidden;position:static;margin: 0 5px 5px 0;">L3</div>
</td>
</tr>
<tr>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
<td>
Blocked Seat
<div class="GXXXXXX GXXXXXXX" style="overflow:hidden;position:static;margin: 0 5px 5px 0;" title="Seat Name: L4 | Fare: Rs. 300.0">L4</div>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
答案 0 :(得分:1)
这是逻辑。查看DIV是否具有title属性。如果它没有座位可用。根据需要更改逻辑。
List<WebElement> seats = driver.findElements(By.cssSelector("div.GXXXXXX.GXXXXXXX"));
for (WebElement seat : seats) {
if(seat.getAttribute("title") != null){
System.out.println("Seat is not available");
}else{
System.out.println("Seat is available");
seat.click(); // break the loop if you wish
}
}