0

C# ステップ定義ファイルを使用して、Selenium Webdriver で Specflow を使用しています。h1 タグは 1 つですが、h2 タグと h3 タグは複数ある Web ページをテストしています。

Specflow のテストは次のように記述されます。

Scenario Outline: The H1 displays the correct value
Given I view the page <page> at url <url>
Then the h1 will read h1

Examples:
| page| url         | h1        |
| home| www.xyz.com | About xyz |

このテストは、h1 タグが 1 つしかなく、「About xyz」が含まれている必要があるため、簡単に実行できます。

しかし、私が抱えている問題は、h2 および h3 タグをテストするときに、それらが複数あるため、テストをどのように構成するのが最適かがわからないことです。

例のテーブルに複数の h2 行を追加することはできますが、値をアサートするためにステップ定義ファイルでこれをコーディングする方法がわかりません。どの h2 を検証する必要があるかを判断できないため、テストが失敗する可能性があるため、質問です。どんな助けでも大歓迎です。

このタイプのクエリについて多くの場所を検索しましたが、何も見つかりませんでした。私以外誰も困らないくらい簡単に違いない!!

ありがとう

スティーブ

4

1 に答える 1

0

以下を使用して、探している特定のフレーズが h2 または h3 タグに含まれているかどうかを確認できます。

driver.FindElement(By.XPath("//h2[contains(., 'TEXT')]"));

「TEXT」を探しているフレーズに置き換えるだけで、必要な要素が返されます。

たとえば、ページの任意の h1 で「About xyz」を検索したい場合:

driver.FindElement(By.XPath("//h1[contains(., 'About xyz')]"));

WebElements のリストを作成し、driver.FindElements 関数を使用して、ページにヘッダーのコレクションを作成できます。この時点で、次のように最後の ')' の後に [1] のようなインデックスを含めることで、どのオカレンスとやり取りしたいかを参照できます。

driver.FindElements(By.XPath("//h1[contains(., 'About xyz')]"))[3];

複数の要素を使用したくない場合は、探している詳細を微調整する必要があります。

于 2012-07-03T22:53:50.507 に答える