私のプロジェクトでは、Web システムのテストに Robot Framework と Selenium2Library を使用しています。
css ロケーターで見つかった要素のリストから特定の要素を使用する必要があります。たとえば、.innerTable>tbody>tr>tdは 10 個の要素を検索し、それらの要素の 2 番目の要素が必要になります。以前のプロジェクトでは、次のようにして目的の要素を参照できました。
specific_cell = driver.find_elements(By.CSS_SELECTOR, ".innerTable>tbody>tr>td")[1]
つまり、要素のリストを作成し、インデックスを使用して特定の要素を選択できます。しかし、Robot フレームワーク + Selenium2Library で同様のことができるかどうかは誰にもわかりませんか?
Selenium2Library キーワードのみを使用して結果に到達する方法があるかどうかを理解しようとしていました。明らかに、既存のキーワードでは不可能です。
ロケーターによって識別された多くの要素から 1 つの特定の要素を使用する可能性を実装するには (元の質問では、それらは css セレクターによって検出されたテーブル セルでした)、Selenium2Library ライブラリに移動して、そこで新しいメソッドを作成する必要があります。
C:\Python27\Lib\site-packages\Selenium2Library\keywords_element.py で、そのようなメソッドを追加できます
def return_elements(self, locator):
"""Returns a list of elements identified by a given locator.
"""
elements = self._element_find(locator, False, True)
if elements is None:
raise AssertionError("Could not find element(s) '%s'" % (locator))
return elements
これにより、Web 要素オブジェクトのリストが返され、このリストを使用して特定の要素を指摘し、それに対して何らかのアクションを実行できます。ただし、クリック、テキストの取得、入力などのアクションが必要な場合は、同じクラスに追加のメソッドを作成する必要があります。これは最適な方法とは思えませんが、少なくとも機能します。もう 1 つのオプションは xpath を使用することであり、上記の記述について心配する必要はありませんが、多数の同様の要素を含む巨大なページをイメージし、ここで Internet Explorer を使用する要件を追加すると、xpath は避けたいものになる可能性があります。