C#动态表格首行数据获取:现有方法修改需求问询
只获取动态表格首行数据的解决方案
我明白你现在的需求——每次调用这个方法只想拿到表格的首行数据,对吧?你当前的代码会遍历所有行,不仅达不到目的,甚至如果表格有多行的话,还会因为重复添加相同的表头键值对抛出异常。咱们来改几处就能解决:
调整后的代码
public static Dictionary<string, IWebElement> GetlatestResults(String GridPath, String GridPathHeader) { var Result = new Dictionary<string, IWebElement>(); var workflowtable = DriverContext.Driver.FindElement(By.XPath(GridPath)); IList<IWebElement> tableRow = workflowtable.FindElements(By.TagName("tr")); // 先判断表格有没有行,防止索引越界 if (tableRow.Count == 0) { return Result; // 也可以根据需求抛出异常提示表格为空 } var workflowTableHeader = DriverContext.Driver.FindElement(By.XPath(GridPathHeader)); IList<IWebElement> colElements = workflowTableHeader.FindElements(By.TagName("th")); // 直接取首行,不用遍历所有行 var firstRow = tableRow[0]; IList<IWebElement> rowValues = firstRow.FindElements(By.TagName("td")); int headerValueIndex = 0; foreach (var rowValue in rowValues) { // 避免列数和表头数不匹配导致的索引异常 if (headerValueIndex < colElements.Count) { Result.Add(colElements[headerValueIndex].Text, rowValue); } headerValueIndex++; } return Result; }
关键改动点
- 删掉了遍历所有行的
foreach循环,直接通过tableRow[0]获取首行元素,精准定位你要的第一行数据 - 增加了空行检查:如果表格没有任何行,直接返回空字典(或者你可以改成抛出异常,根据自己的业务场景调整)
- 加了表头索引的有效性判断,防止行内列数和表头列数不一致时出现索引越界问题
- 保留了你原来的变量命名风格,如果你习惯C#的小驼峰命名规范,也可以自行调整变量名(比如
GridPath改成gridPath)
这样修改后,每次调用GetlatestResults就只会返回表格首行的键值对啦,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user8075070
相关产品推荐
相关产品推荐

