我是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开始迭代到列表的末尾。
答案 0 :(得分:1)
您不需要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)
答案 1 :(得分:0)
首先,您编写的程序中存在一个错误:
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。
我们喜欢编写简洁明了的代码,该代码倾向于压缩可读性,而不是压缩性能的每一寸细节。
参照此内容,您应该更改代码,因为它不必要地混乱,甚至没有使用value
的{{1}}元素。我建议以下内容:
enumerate
此代码简短,简洁,最重要的是其他人都可以读取。
注意:将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)
,name
,age
替换为程序中所代表的内容。
如果实际上这不能解决您的问题,则您的问题可能不是python,而是硒本身,这不在此问题的范围内。您可以通过在将其输入硒功能之前简单地打印值来进行测试:
height
希望这会有所帮助。