当前位置: 首页 > 面试题库 >

在C#中找到正确的用户名后如何单击数据网格中的按钮

施俊驰
2023-03-14
问题内容

所以这是我的代码,它能够获取datagrid列的标题并从用户输入中找到匹配的值。例如,如果输入为“ jdoe”,它将查看数据网格中的“用户名”列,并将
[value.Key] .Textvalue.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;
        }

    }
  }
}


 类似资料:
  • 在此处输入图像描述 在此处输入图像描述 类MainActivity:AppCompatActivity(){lateinit var binding:ActivityMainBinding重写fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)binding=ActivityMainBinding.i

  • 试图查找包含data-qa属性的按钮。尝试用以下方案处理它:

  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,

  • 我有一个包含36个按钮的响应网站。乍一看,我们只能看到12个按钮,我需要验证它们的文本值,我知道如何做到这一点。但问题是我需要点击下一步按钮,直到它不可见。那么在c#中如何用selenium来做呢? 此外,在单击“下一步”时,我们需要将按钮的文本存储在一个列表或数组中,这样我就可以将所有列表添加到一个新列表中并进行比较。 看看下面的代码,我试过了。 现在上面的工作正常,但当“下一步”按钮不可用时,

  • 我以前也问过类似的问题,但在解析网页时仍然会遇到错误。场景是系统导航到https://shop.sprouts.com/shop/flyer并希望提取与每个类别相关的每个特价商品。目前,当一个类别被点击时,我会在右边看到一个空白屏幕。我尝试了以下两种方法,但得到了相同的结果。 这是时间问题吗?我做错了什么?

  • 我有一个剑道网格和一个按钮栏。单击按钮时,我希望它调用一个javascript函数,并将行的数据作为参数。这是我到目前为止所拥有的