C# 使用Selenium C在同一表中的另一列中的值检查一列中的框#

C# 使用Selenium C在同一表中的另一列中的值检查一列中的框#,c#,google-chrome,selenium,nunit,selenium-chromedriver,C#,Google Chrome,Selenium,Nunit,Selenium Chromedriver,我正在使用NUnit测试C#(ChromeDriver)中的Selenium,但遇到了一个问题。我们有一个表,根据该帐户启用的内容动态加载各种产品。 我试图围绕它编写测试,以订购每个单独的产品,但我在标记复选框时遇到了一个障碍。该表仅使用一个数字ID,产品名称使用一个单独的列(请参见下面的HTML代码) 有一个隐藏字段包含产品名称,但我在过去被告知,Selenium无法看到它,除非它是可见的 任何帮助或想法都将是我解决这个问题的一个很好的开始 <td align="center" vali

我正在使用NUnit测试C#(ChromeDriver)中的Selenium,但遇到了一个问题。我们有一个表,根据该帐户启用的内容动态加载各种产品。 我试图围绕它编写测试,以订购每个单独的产品,但我在标记复选框时遇到了一个障碍。该表仅使用一个数字ID,产品名称使用一个单独的列(请参见下面的HTML代码)

有一个隐藏字段包含产品名称,但我在过去被告知,Selenium无法看到它,除非它是可见的

任何帮助或想法都将是我解决这个问题的一个很好的开始

<td align="center" valign="top">
    <input id="reports11.selected1" name="reports[11].selected" onclick="javascript:doCheckbox(11, false)" style="margin-top:5px" type="checkbox" value="true">
    <input type="hidden" name="_reports[11].selected" value="on">
    <input id="reports11.productClassId" name="reports[11].productClassId" type="hidden" value="1">
    <input id="reports11.productId" name="reports[11].productId" type="hidden" value="99599">
    <input id="reports11.name" name="reports[11].name" type="hidden" value="Product Build - TEST">
</td>

<td align="center" valign="top">
    <select id="reports11.priority" name="reports[11].priority" style="width:40px;padding:1px;margin: 0 0 0 0" onchange="javascript:doPriority(11)">
        <option value="0" selected="selected">--</option>
    </select>
</td>

<td valign="top">
    Product Build - TEST
</td>


--
产品构建-测试

下面的代码假定复选框位于第一列,产品名称位于第三列

public void chooseProductbyName(productName)
{
 string xpath = "//tr[td[3][text()='"+productName+"']]/td[1]/input[@type='checkbox']";
 driver.findElement(by.xpath(xpath)).click();
}

若您只需要隐藏字段的值,那个么应该很容易。首先使用一些GetElementBy方法获取IWebElement,然后对获取的IWebElement调用GetAttribute(“value”),然后可以使用Selenium helper for select=>SelectElement及其SelectByValue方法。您的代码尝试在哪里?您引用了“见下面的代码”,但没有。你需要更具体地说明你想做什么和什么不起作用。您引用了“标记复选框”,但没有说明是哪一个。。。有5个输入和一个选择。“产品构建-测试”应该是产品名称吗?你有很好的HTML示例。。。现在在您的问题中添加对该HTML的引用,以澄清您的问题。@JeffC抱歉,在该问题上打错了。基本上,在HTML表中,有一个复选框,我可以使用Selenium通过自动化进行检查(有50种产品带有复选框)。我试图做的是根据产品构建测试行中显示的产品名称,只选中其中一个复选框。当我尝试此操作时,Selenium无法看到上述区域中的复选框,因为报告(X)发生了更改。其中有5个输入标记。。。4个是隐藏的,但有一个不是。。。你有没有试过点击/与之互动?是的,这很有效。然而,我也必须为动态表编写它,所以虽然上面的报告11基本上是“产品构建-测试”,但在下一个测试中,它可能是“产品构建-测试”的报告16。所以我很抱歉,我可以在隐藏的输入标签中看到名称,但如果我尝试调用它,Selenium将看不到。谢谢!我就是不知道如何使用动态生成的列表来实现这一点。