gpt4 book ai didi

c# - Selenium c# 在表中查找链接

转载 作者:行者123 更新时间:2023-11-30 23:12:25 24 4
gpt4 key购买 nike

我试图在表中找到一个链接,该链接位于第 1 列中的第 11 列中的数据

经过大量搜索,我发现了以下适合我需要的代码片段

        IWebElement table = driver.FindElement(By.XPath("//*[@id='NewBusinessDetailRecords']"));
IList <IWebElement> rows = table.FindElements(By.TagName("tr"));

foreach (IWebElement row in table)
{
rows = table.FindElements(By.TagName("tr"));
IList<IWebElement> cells = row.FindElements(By.TagName("td"));
if (cells[10].Text.Equals("103"))
{
cells[0].Click();
}
}

但是 foreach 语句无法突出显示错误的表

foreach statement cannot operate on variables of type 'OpenQA.Selenium.IWebElement' because 'OpenQA.Selenium.IWebElement' does not contain a public definition for 'GetEnumerator'

一些帖子建议我需要使用 IEnumerable(还有一些帖子建议这应该是自动的)但我还没有设法在我的代码中实现它。

感谢任何帮助

编辑:

来自 1 个表格行的示例 HTML

<table id="NewBusinessDetailRecords" cellspacing="0" style="width:100%;" class="listviewgrid">  
<thead> ... </thead>
<tbody>
<tr id="0" class="datagriddetail">
<td style="text-align: center">
<a href="" accesskey="1" style="cursor: pointer; cursor: hand;" onclick="CopyNewBusinessDetailRecord(0, 0, 1083406, 14436); return false;" title="Matched to Invoice with ID = 14436; Client with ID = 1083406"><img src="../../images/icons/invoice.png" border="0"></a> </td>
<td> Test1 Case1 </td>
<td> Invoice </td>
<td> GBP </td>
<td style="text-align: right"> 600.00 </td>
<td> 0% </td>
<td style="text-align: right"> 600.00 </td>
<td> </td>
<td> Company Name </td>
<td> UserName</td>
<td> 103 </td>
<td> </td>
<td> </td>
<td> </td>
<td style="text-align: center"> </td>
</tr> <tr id="0" class="datagriddetail">

最佳答案

您想对每个 <tr> 进行迭代在<table> .您应该遍历 rows , 不是 table :

foreach (IWebElement row in rows)

此外,您还需要删除这条无关的行:rows = table.FindElements(By.TagName("tr")); .一旦“进入”foreach 循环,row变量包含 <tr> IWebElement待处理。


根据您的示例 HTML,我还有一些建议:

  • 我会尽可能避免使用 XPath。在您的情况下,只需按 ID 选择即可。

    IWebElement table = driver.FindElement(By.Id("NewBusinessDetailRecords"));
  • 在索引前添加验证 cells .这将防止 ArgumentOutOfRangeException .

    if (cells.Count > 10 && cells[10].Text.Equals("103"))

完整代码:

IWebElement table = driver.FindElement(By.Id("NewBusinessDetailRecords"));
IList<IWebElement> rows = table.FindElements(By.TagName("tr"));

foreach (IWebElement row in rows)
{
IList<IWebElement> cells = row.FindElements(By.TagName("td"));
if (cells.Count > 10 && cells[10].Text.Equals("103"))
{
cells[0].Click();
}
}

关于c# - Selenium c# 在表中查找链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44160267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com