繁体   English   中英

处理 selenium C# 中的表

[英]Handle with tables in selenium C#

我试图处理 selenium C# 中的表。 我有一个有几行几列的表。 每行都有带有名称和按钮的列。 我想单击“打开”按钮,其中行中的名称是,例如“Name1”。 但我什至在表中都找不到 td。 这就是我想做的事情:

public void SelectNameAndClick(string name)
        {
            IWebElement tableElement = driver.FindElement(By.XPath("//table[@id='TableMp']"));
            IList<IWebElement> tableRow = tableElement.FindElements(By.TagName("tr"));
            IList<IWebElement> rowTD;
            foreach (IWebElement row in tableRow)
            {
                if (row.Text.Equals(name));
                rowTD = row.FindElements(By.TagName("td"));

我附上了桌子的屏幕截图:这里

 <table class="table table-condensed table-hover" id="TableMp" style="" data-bind="visible: opAGents().length > 0"> <tbody data-bind="foreach: opAGents"> <tr> <td> <span agentid="OPAgents/4b2f885101f740fdb72c5874596577ac" data-original-title="4b2f885101f740fdb72c5874596577ac">4b2f885101f740fdb72c5874596577ac</span> </td> <td class="vert-align"> <span >Jun 23, 2020 9:07 PM</span> </td> <td class="vert-align"> <span data-original-title="4b2f885101f740fdb72c5874596577ac">4b2f...</span> <button class="btn btn-default btn-aligned-left" title="" data-original-title="Copy token"></i></button> </td> <td> <span class="agent-led agent-active" data-original-title="Connected"></span> </td> <td class="vert-align hidden-xs"> <button data-bind="class="btn-aligned-left quick-action btn btn-sm btn-primary"> <span class="no-pointer-events"> <span>Open</span> </span> </button> </td> <td class="vert-align"> <button class="btn btn-default btn-aligned-left" ></i></button> </td> </tr> <tr> <td class="vert-align"> <span agentid="OPAgents/46414e7df0234d01aa6df6df7c195d17" data-original-title="">Name1</span> </td> <td class="vert-align"> <span >Jul 23, 2020 10:17 AM</span> </td> <td class="vert-align" style="white-space:nowrap"> <span data-original-title="46414e7df0234d01aa6df6df7c195d17">4641...</span> <button class="btn btn-default btn-aligned-left"><i class="fa fa-files-o" data-bind="attr:{ 'data-original-title': 'Copy token' }, toolTip: { hideOnMobile: true }" title="" data-original-title="Copy token"></i></button> </td> <td> <span class="agent-led agent-active" data-original-title="Connected"></span> </td> <td class="vert-align hidden-xs"> <button class="btn-aligned-left quick-action btn btn-sm btn-primary"> <span class="no-pointer-events"> <span>Open</span> </span> </button> </td>

这应该适合你:

public void SelectNameAndClick(string name)
{
    // Selecting your table element.
    IWebElement table = driver.FindElement(By.XPath("//table[@id='TableMp']"));

    // Select the row where name of the agent equals to the name we're searching for.
    IWebElement row = table
                .FindElements(By.TagName("tr"))
                .FirstOrDefault(element =>
                    element.FindElements(
                        By.XPath($"//span[@agentid and text()='{name}']")).Count > 0);

    // If there is no such row, do nothing.
    if (row == null)
        return;

    // Find the button with the 'Open' text somewhere within it and click the button.
    IWebElement button = row.FindElement(By.XPath("//button//*[text()='Open']"));
    button.Click();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM