如何用Selenium从表单第二行填充且不遗漏DataGridView数据?
解决方案
问题出在表单ID的拼接逻辑上:你当前把固定前缀"dp_2"和循环变量i直接拼接,导致生成的ID是dp_20、dp_21这类不符合预期的格式,自然会跳到后面的表单行。
正确的做法是,表单行的数字部分应该是2 + i(因为DataGridView的索引i从0开始,对应表单的第2行、第3行……),修改后的代码如下:
for (int i = 0; i < dataGridView1.Rows.Count; i++) { var val1 = dataGridView1.Rows[i].Cells[0].Value.ToString(); // 出生日期 var val2 = dataGridView1.Rows[i].Cells[1].Value.ToString(); // 身份证号 var val3 = dataGridView1.Rows[i].Cells[2].Value.ToString(); // 电话 // 计算表单行的数字:2 + i,对应第二行、第三行…… int formRowNumber = 2 + i; driver.FindElement(By.Id("dp_" + formRowNumber.ToString())).SendKeys(val1); driver.FindElement(By.Id("tb_" + formRowNumber.ToString())).SendKeys(val2); driver.FindElement(By.Id("tel_" + formRowNumber.ToString())).SendKeys(val3); }
这样循环变量i从0开始遍历DataGridView的所有数据,同时formRowNumber从2开始递增,正好匹配表单第二行及以后的ID规则,既不会跳过任何一条数据,也能精准填充到目标表单行。
内容的提问来源于stack exchange,提问作者user17750070
相关产品推荐
相关产品推荐

