2

我的 HTML 表格在第 5 列中有一个单元格,其中包含值“1”、“2”和“3”的下拉菜单;

到目前为止,我可以到达那个单元格:

ICollection<IWebElement> table = driver.FindElements(By.Id("highVolumeSearchResults_group"));
List<IWebElement> elements = table.ToList();                
ICollection<IWebElement> cell_action = driver.FindElements(By.XPath(".//tbody/tr/td[5]"));

Cell_action- 是一个包含下拉选项/值“1”、“2”、“3”的变量。我不确定如何继续,但我需要能够从下拉菜单中选择任何值。
任何人都可以给我一个提示吗?

它背后的代码:

 </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>

问题是 'select id="244" ' 部分 - 是动态生成的,所以我不应该使用 id。我需要想出 DropdownBox 选项,但还不知道怎么做。我也尝试继续:

IWebElement cell_action1 = cell_action.First(); and then 
SelectElement DropDownBox_action = 
    new SelectElement(cell_action1.FindElement(
        By.XPath("//select[contains(, 'CommitAction')]")));  

这对我不起作用。

4

1 回答 1

0

使用SelectElement它实际上非常简单:

var dropdown = driver.FindElement(By.XPath(".//tbody/tr/td[5]/select"));

var selectElement = new SelectElement(dropdown);

selectElement.SelectByValue("rename"); // or another value (ex: edit, delete)

更新

如果要获取属性<select>中包含字符串的元素"CommitAction",请onchange使用以下 XPath 表达式:"//select[contains(@onchange, 'CommitAction')]"

于 2013-01-03T17:09:11.050 回答