【发布时间】:2015-10-13 14:54:59
【问题描述】:
我正在尝试使用 Specflow 使用 Selenium 自动执行 Web 测试。到目前为止,一切进展顺利,但我现在遇到了问题。我的其中一个步骤允许用户输入变量,该步骤如下所示:
Given I click the (VARIABLE) Menu
而且其背后的代码相当简单,只需根据传递的文本点击一个链接即可:
driver.FindElement(By.XPath("Xpath to get to the variable")).Click();
但是,后面的步骤必须使用此信息。没关系,您可以使用“ScenarioContext.Current.Add(string, variable)”,我知道并一直在使用它。它可以满足我最初得知的需求。
我的问题是,现在企业希望能够同时添加多个项目。这提出了两个问题。尝试再次调用该步骤会引发异常:“已添加具有相同键的项目。”如果我将其放入场景大纲中,这将允许我在第二次运行中再次调用该变量,我将无法在最后一步中使用第一个变量。
从逻辑上讲,这意味着多次传入变量是问题所在(这是有道理的,因为它是以字符串形式传入的),因此将变量作为数组传入似乎是合乎逻辑的方法。这个想法是,当我将参数作为数组而不是字符串从一个步骤传递到另一个步骤时,我 理论上 不会遇到此错误,然后我将能够遍历在后面的步骤中使用 for 循环的数组。这似乎是 SpecFlow 应该能够做到的事情,但我在找出如何实现这一点时遇到了问题。有谁知道如何做到这一点?我试图仅仅使用:
Scenario.Context.Current.Add(string, variable).ToArray();
但是,这不起作用,我可以在 SpecFlow 文档中找到的所有“ToArray”示例似乎并没有真正改变您从一个步骤传递到另一个步骤的 变量到一个数组中,它似乎只在单个步骤内部使用,并且从未在步骤之间传递。在 SpecFlow 中是否可以使用 ScenarioContext.Current.Add(string, variable) 作为数组传递参数?
提前致谢。
【问题讨论】: