所以这是我的代码,它能够获取datagrid列的标题并从用户输入中找到匹配的值。例如,如果输入为“ jdoe”,它将查看数据网格中的“用户名”列,并将 [value.Key] .Text 与 value.Value相匹配 。现在的问题是,每行都有一个具有相同自动化ID的“编辑”按钮。我如何遍历数据网格并能够单击“编辑”按钮,而不管“ jdoe”在哪一行:这是我到目前为止的内容:
public static bool Contains(this ListView listView, ObjectInList objectInList) { foreach (ListViewRow row in listView.Rows) { if (DataMatches(row, objectInList)) return true; } return false; } private static bool DataMatches(ListViewRow row, ObjectInList objectInList) { foreach (KeyValuePair<string, string> value in objectInList.Values) { if (row.Cells[value.Key].Text != value.Value) return false; } return true; } } internal class UserInList : ObjectInList { public UserInList(string username) { _values["Username"] = username; } } internal class OrderInList : ObjectInList { public OrderInList(string orderNumber) { _values["Depot Tag #"] = orderNumber; } } internal abstract class ObjectInList { protected readonly Dictionary<string, string> _values = new Dictionary<string, string>(); public IReadOnlyDictionary<string, string> Values { get { return _values; } }
这是WPF应用程序的屏幕截图
这是我用来遍历表的内容:
得到你的搜索元素= value2
得到你的表ID,xpath或css = myTable
循环将遍历表,然后找到value2。在这里,您可以选择下一步要做什么。假设您的专栏看起来像这样:
|col 1 |col 2 | col 3 | |link1 | value1 | link2 | |link1 | value2 | link2 |
在下面,它将停止在value2上。变成tds [i]。单击链接1,我使用:
tds[i - 1].Click();
如果要单击链接2,请使用:
tds[i + 1].Click();
只需考虑[i]中的列号,然后向左(减)或向右(加)计数。
public void ClickTableLink(String value2) { var table = driver.FindElement(By.Id("myTable")); foreach (var tr in table.FindElements(By.TagName("tr"))) { var tds = tr.FindElements(By.TagName("td")); for (var i = 0; i < tds.Count; i++) { if (tds[i].Text.Trim().Contains(value2)) { tds[i - 1].Click(); break; } } } }