0

我在网页上显示了一个搜索结果,由表格格式的一条记录表示。它背后的代码:

</table>
<table id="highVolumeSearchResults_group" class="highVolumeSearchResults">
  <thead>
  <tbody>
     <tr>
       <td class="title letter" rowspan="1">W</td>
       <td>
          <a id="group-name-244" href="/Portal/Workgroup/Details?id=244">WorkGroup_Cats</a>
       </td>
       <td>0</td>
       <td>12/28/2012 4:14:01 PM</td>
       <td>
          <select id="244" onchange="CommitAction(244, this.options[this.selectedIndex].value, this)">
             <option value="">------</option>
             <option value="edit">Edit Users</option>
             <option value="rename">Rename</option>
             <option value="delete">Delete</option>
          </select>
       </td>
    </tr>
</tbody>
</table>

我正在尝试自动化(在 C# 中)“重命名”和/或“删除”选项,因此基本上是在寻找一种方法来选择/单击“244”单元格下拉列表中的“重命名”或“删除”选项。该 id 的问题在于它是动态生成的,一旦我删除该行并创建一个新行 - 一个新的 id 被分配给新创建的记录。我的下拉列表位于已识别记录(行)的第 5 列。

这就是我开始实施的方式:

ICollection<IWebElement> table = driver.FindElements(By.Id("highVolumeSearchResults_group")); 
List<IWebElement> elements = table.ToList();

string test = elements[1].FindElement(By.XPath("//tbody/tr/td[4]")).Text; 
test.FindElement(By.

它似乎对我不起作用(此时 Selenium IDE 仅使用 Id 标识元素)。有人可以帮忙吗,我迷路了。

4

1 回答 1

3

尝试这个

ICollection<IWebElement> table = driver.FindElements(By.XPath("//table[@id='highVolumeSearchResults_group']//tr/td")); 
List<IWebElement> elements = table.ToList();

现在迭代该列表以获取每个 td 内容。(td内的文字)

要从该下拉列表中获取所有选项,请使用此(它是 java selenium 绑定中的实现)

new Select(driver.findElement(By.xpath("//table[@id='highVolumeSearchResults_group']//tr/td/select")).getOptions();

在 C# 中可能是这样的

new SelectElement(driver.FindElement(By.XPath("//table[@id='highVolumeSearchResults_group']//tr/td/select")).Options;

PS:我不太了解硒的 C# 实现。

于 2013-01-03T08:01:52.517 回答