Selenium使用find_elements_by_xpath获取元素文本重复问题咨询
问题解决方法
一、获取每个style元素下的info文本
你的代码问题出在XPath路径:循环中使用//*[@class="info"]是从整个文档根节点开始查找,所以每次都返回第一个匹配的元素,而非当前父元素的子元素。需要改用相对路径,在XPath前加.表示从当前元素上下文开始查找:
info_elements = driver.find_elements_by_xpath('//*[@style="background-color: initial;"]') for elem in info_elements: # 使用.//限定查找范围为当前元素的后代节点 my_text_elem = elem.find_element_by_xpath('.//*[@class="info"]') print(my_text_elem.text)
二、单独获取第4个style元素下的info文本
方法1:直接通过XPath索引定位
XPath的索引从1开始,直接在表达式中指定第4个目标元素:
fourth_info_text = driver.find_element_by_xpath('(//*[@style="background-color: initial;"])[4]//*[@class="info"]').text print(fourth_info_text)
方法2:先获取所有元素再取指定索引
Python列表索引从0开始,取索引3对应第4个元素,同时建议增加长度判断避免索引越界:
info_elements = driver.find_elements_by_xpath('//*[@style="background-color: initial;"]') if len(info_elements) >= 4: fourth_elem = info_elements[3] fourth_info_text = fourth_elem.find_element_by_xpath('.//*[@class="info"]').text print(fourth_info_text) else: print("未找到足够数量的符合条件元素")
内容的提问来源于stack exchange,提问作者cmarios
相关产品推荐
相关产品推荐

