Selenium Python:从数组索引2开始向文本框数组输入内容
解决方案
核心需求很明确:通过CLASS_NAME定位到5个文本框,跳过前2个,将['YES', 'NO', 'IDK']依次填入第3、4、5个文本框(对应索引2、3、4)。
你之前代码的问题
- 嵌套循环逻辑混乱:每次遍历投票选项时都重新定位所有文本框,还给每个框都输入当前选项,导致所有文本框会被重复赋值
- 变量
i完全没用,既没参与索引定位,也没控制循环逻辑
正确代码实现
方法一:通过索引对应
# 一次性获取所有CLASS_NAME为formCTRL的文本框 all_textboxes = driver.find_elements(By.CLASS_NAME, 'formCTRL') voting_options = ['YES', 'NO', 'IDK'] # 遍历投票选项,对应到后三个文本框 for idx in range(len(voting_options)): # 文本框索引从2开始,和投票选项索引一一对应 all_textboxes[2 + idx].send_keys(voting_options[idx])
方法二:用zip配对(更简洁)
直接把需要输入的文本框切片出来,和投票选项一一配对输入:
all_textboxes = driver.find_elements(By.CLASS_NAME, 'formCTRL') voting_options = ['YES', 'NO', 'IDK'] # 取后三个文本框,和选项逐一配对输入 for textbox, option in zip(all_textboxes[2:], voting_options): textbox.send_keys(option)
关键注意点
- 必须确保
driver.find_elements返回的元素顺序和页面上文本框的显示顺序完全一致,这是定位的基础 - 如果页面加载较慢,建议添加显式等待(比如
WebDriverWait),等所有文本框加载完成后再执行定位操作,避免出现元素未找到的异常
内容的提问来源于stack exchange,提问作者shn
相关产品推荐
相关产品推荐

