0

我们正在使用带有 Selenium Webdriver 的 Specflow,使用 C# 步骤定义文件。我正在测试一个网页,其中我们有一个 h1 标签,但有多个 h2 和 h3 标签。

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 标签,并且它应该包含“关于 xyz ”。

但是,我遇到的问题是,在测试 h2 和 h3 标签时,其中有不止一个,所以我不确定如何最好地构建测试。

我可以在示例表中添加多个 h2 行,但不知道如何在步骤定义文件中对此进行编码以断言值。测试可能会失败,因为它无法确定我需要验证哪个 h2,因此问题。任何帮助深表感谢。

我在很多地方搜索过这种类型的查询,但一无所获。一定很容易,除了我没有其他人有问题!

谢谢

史蒂夫

4

1 回答 1

0

您可以使用以下内容检查 h2 或 h3 标签是否包含您要查找的某个短语:

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

您需要做的就是用您要查找的短语替换“TEXT”,它会返回您想要的元素。

例如,如果您想在页面上的任何 h1 中找到“关于 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 回答