首页 > 解决方案 > python selenium find_elements 输出不正确

问题描述

我是 python+selenium 的新手。我正在尝试使用 find_elements* 函数返回一些东西 - 请参见下面的代码。当我询问列表的长度时,我可以看到项目的数量是正确的,但是当我打印元素的内容时,我可以看到每个元素包含相同的值并且应该包含不同的值。

elems = browser.find_elements_by_xpath("//div[@class='some_class_name')]")
print(len(elems))   # returns correct number of items

for elem in elems:
    print(elem.find_element_by_xpath("//span[@class='another_class_name']").text)
    print(elem.find_element_by_xpath("//div[starts-with(@href, 'https://some_web_page_name.com/')]").get_attribute(
        'data'))
    print(elem.find_element_by_xpath("//div[@class='other_class_name']").text)

标签: python-3.xselenium-webdriver

解决方案


您应该使用.将 xpath 的范围缩小到当前元素的子/孙元素。在您的情况下,XPath 指向页面上的第一个元素,而不是在当前elem 更改代码下找到,如下所示

for elem in elems:
    print(elem.find_element_by_xpath(".//span[@class='another_class_name']").text)
    print(elem.find_element_by_xpath(".//div[starts-with(@href, 'https://some_web_page_name.com/')]").get_attribute(
        'data'))
    print(elem.find_element_by_xpath(".//div[@class='other_class_name']").text)

推荐阅读