下面有四个单选按钮,每个按钮都选择一名乘客。
<input checked="checked" name="passenger" id="passenger-0" data-passengerindex="0" type="radio">
<input checked="checked" name="passenger" id="passenger-1" data-passengerindex="1" type="radio">
<input checked="checked" name="passenger" id="passenger-2" data-passengerindex="2" type="radio">
<input checked="checked" name="passenger" id="passenger-3" data-passengerindex="3" type="radio">
下面是一段代码,显示了一排座位(第 6 排),一些婴儿座位 (class="seat Baby")
和其他普通座位(普通座位是 noinfant 座位) - class="seat noinfant"
和座位 class="seat"
。
<td>
<a href="#6A" title="Seat Suitable for Infants 6A" data-seat="6A" data-seatid="81374518" data-seatgroup="0" class="seat infant" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6A</span>
</a>
</td><td>
<a href="#6B" title="Seat Suitable for Infants 6B" data-seat="6B" data-seatid="81374519" data-seatgroup="0" class="seat infant" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6B</span>
</a>
</td>
<td>
<a href="#6C" title="Seat Suitable for Infants 6C" data-seat="6C" data-seatid="81374520" data-seatgroup="0" class="seat infant" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6C</span>
</a>
</td>
<td class="aisle">6</td>
<td>
<a href="#6D" title="Seat Suitable for Infants 6D" data-seat="6D" data-seatid="81374522" data-seatgroup="1" class="seat noinfant" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6D</span>
</a>
</td>
<td>
<a href="#6E" title="Seat Suitable for Infants 6E" data-seat="6E" data-seatid="81374523" data-seatgroup="1" class="seat" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6E</span>
</a>
</td>
<td>
<a href="#6F" title="Seat Suitable for Infants 6F" data-seat="6F" data-seatid="81374524" data-seatgroup="1" class="seat infant" data-personid="" data-infantseat="True">
<span>Seat Suitable for Infants 6F</span>
</a>
</td>
</tr>
选择座位后,会发生以下情况:
- 婴儿座椅的舱位从
class="seat Baby"
更改为class="seat Babyserved selected
- 普通座位 -
class="seat noinfant"
至class="seat noinfantserved selected
或class="seat"
至class="预留座位已选择
以下是我需要帮助实现的内容:
从第 1 行开始并继续
- 对于前两名乘客,请点击下一个可用的婴儿 座位(每个婴儿座椅一名乘客)
- 对于最后两名乘客,请点击从第 1 排开始的任意座位 从此
我们不需要实际选择乘客,因为他们在选择座位后会自动选择,并且在加载页面时已经选择了第一位乘客。
有没有人像我一样只使用了 4 天 Python,所以根本不知道如何实现上述内容?
最佳答案
这个想法是:
- 根据乘客是否携带婴儿(
data-hasinfant
属性),决定选择哪个座位 - 使用 CSS 类选择器和
not()
来获取未选择和未保留的座位
示例实现:
for passenger in driver.find_elements_by_css_selector("ol.passengerlist li[data-personid]"):
passenger.click()
has_infant = passenger.get_attribute("data-hasinfant")
# choose seats
if has_infant:
# select a non-selected infant seat
seat = driver.find_element_by_css_selector(".planebody a.seat.infant:not(.reserved):not(.selected)")
else:
# select a non-reserved non-selected seat
seat = driver.find_element_by_css_selector(".planebody a.seat:not(.reserved):not(.selected)")
print("Passenger: %s, choosing seat: %s" % (passenger.text.strip(), seat.get_attribute("data-seat")))
seat.click()
关于python - 如何循环浏览并点击相关项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303663/