Selenium定位div.booking-classes下第5个子元素按钮失败的问题
解决Selenium元素定位问题
问题原因
你之前使用的CSS选择器逻辑错误:div.booking-classes:nth-child(5) 是在查找父元素下第5个class为booking-classes的div,而不是div.booking-classes内部的第5个子元素。这就是定位子元素失败、仅定位第0个元素时返回整个容器的原因。
正确定位方法
方法1:CSS选择器(定位第5个子元素)
使用子元素选择器结合:nth-child(),指定div.booking-classes内部的第5个子元素:
driver.find_element(By.CSS_SELECTOR, 'div.booking-classes > :nth-child(5)')
注:div.booking-classes的子元素顺序为:1. h3、2. div、3. button、4. button、5. button,所以:nth-child(5)就是目标的第三个button。
方法2:CSS选择器(直接定位第三个button)
针对同类型的button子元素,使用:nth-of-type()更直观:
driver.find_element(By.CSS_SELECTOR, 'div.booking-classes > button:nth-of-type(3)')
方法3:XPath定位
直接定位div.booking-classes下的第三个button:
driver.find_element(By.XPATH, "//div[@class='booking-classes']/button[3]")
或者定位第5个子元素:
driver.find_element(By.XPATH, "//div[@class='booking-classes']/*[5]")
内容的提问来源于stack exchange,提问作者user11004963
相关产品推荐
相关产品推荐

