0

Web ページに表示される検索結果は、表形式の 1 つのレコードで表されます。その背後にあるコード:

</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#で)「名前の変更」および/または「削除」オプションを自動化しようとしているため、基本的に、ID「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 に答える