如何从MSSQL表读取数据生成列表,修复for循环仅调用最后一条记录的问题
问题根因
- 缩进逻辑错误:你将搜索、点击的业务逻辑全部写在了for循环之外,for循环内部仅重复给
searchInput变量赋值,循环执行完毕后searchInput只会保留最后一条记录的值,后续的搜索操作自然仅针对最后一条记录运行。 - 返回值格式处理错误:
cursor.fetchall()返回的每一行是元组类型,哪怕仅查询一个字段,返回结果格式也是(订单号,),直接将元组传入输入框会存在格式异常。
修正后的代码
from typing import List, Any # 前面的数据库连接逻辑保持不变 curr = conn.cursor() sql = """ select order# from Orders WHERE STATUS <> 'Shipped' and STATUS <> 'Not Found' and order# > '' """ curr.execute(sql) row: List[Any] = curr.fetchall() # 所有需要逐行执行的逻辑都缩进在for循环内部 for x in row: # 从元组中取出第一个元素,就是你要的订单号 searchInput = x[0] serchinput_textbox = driver.find_element_by_id("searchInput") # 每次输入前先清空输入框,避免上一次的内容残留 serchinput_textbox.clear() serchinput_textbox.send_keys(searchInput) searchbutton = driver.find_element_by_id("searchButton") searchbutton.click()
注意事项
- 严格对齐for循环的缩进:所有需要对每条订单执行的操作都要放在for循环的缩进块内
- 如果查询的是多字段,可以通过下标
x[0]/x[1]分别取对应字段的值 - 建议增加页面加载等待逻辑,避免点击搜索后页面还没加载完就执行下一次查询,导致元素找不到报错
内容的提问来源于stack exchange,提问作者dkaveritt
相关产品推荐
相关产品推荐

