python 中的 for 循环问题只获取最后一项

issue with for loop in python only gets the last item

我是 python 的初学者,目前我正在尝试使用 selenium 自动填充网站字段。

我正在尝试使用 for 循环遍历嵌套列表,但总是只获取最后一个元素。有什么建议吗?

fields = [['a','b','c'],['x','y','z']]
for i in range(len(fields)):
    driver.find_element_by_xpath("element").send_keys(fields[i][0],fields[i[1],fields[i][2])
    driver.find_element_by_xpath("element_save").click()

#then loop and iterate through 2nd nested list

# OUTPUT = x,y,z

我希望从索引 0 开始迭代到列表末尾。

您不需要 range(len(list_)) 来迭代索引。

通常 for 就可以了。您还可以使用 *:

解压列表
fields = [['a','b','c'],['x','y','z']]
len_ = len(fields)
for i in range(len_):
    driver.find_element_by_xpath("element").send_keys(*fields[i])

您还可以遍历 fields 本身的值:

fields = [['a','b','c'],['x','y','z']]

for field in fields:
    driver.find_element_by_xpath("element").send_keys(*field)

首先,您编写的程序中存在错误:

fields = [['a','b','c'],['x','y','z']]
for i, v in enumerate(fields):
    driver.find_element_by_xpath("element").send_keys(fields[i][0],fields[i[1],fields[i][2])
                                                                           ^ # No closing ]

其次,Python 开发人员喜欢抛出一个术语:Pythonic Code

我们喜欢编写简短的代码,这些代码有利于可读性,而不是挤压每一寸性能。

提到这个你应该改变你的代码,因为它不必要地混乱而且你甚至没有使用 enumeratevalue 元素。我会推荐以下内容:

fields = [['a','b','c'],['x','y','z']]
for field in fields:
    name, age, height = field  # Replace this line with whatever the fields represent
    driver.find_element_by_xpath("element").send_keys(name, age, height)

这段代码简短、简洁,最重要的是对其他人来说非常易读。

注意:将 nameageheight 替换为它们在您的程序中代表的任何内容。

如果实际上这并没有解决您的问题,那么您的问题可能不是 python 而是 selenium 本身,这超出了这个问题的范围。您可以通过在将值提供给 selenium 函数之前简单地打印值来测试它,如下所示:

fields = [['a','b','c'],['x','y','z']]
for field in fields:
    name, age, height = field  # Replace this line with whatever the fields represent
    print(name, age, height)
    driver.find_element_by_xpath("element").send_keys(name, age, height)

希望对您有所帮助。