我正在尝试使用Specflow来自动化使用Selenium的Web测试。到目前为止,事情总的来说还不错,但我现在遇到了一个问题。我的一个步骤,允许用户输入的变量,步骤如下:传递变量作为数组specflow c#
Given I click the (VARIABLE) Menu
和它背后的代码是相当简单的,只是基于传递文本链接上点击:
driver.FindElement(By.XPath("Xpath to get to the variable")).Click();
但是,有一个后续步骤必须使用此信息。这很好,你可以使用“ScenarioContext.Current.Add(字符串,变量)”,我知道这一点,并一直在使用它。它起到了我首先通知的需求的作用。
我的问题是,现在企业希望能够同时添加多个项目。这提出了两个问题。试图第二次调用该步骤会引发异常:“已添加具有相同密钥的项目。”如果我把它放到场景纲要中,这将允许我在第二次运行中第二次调用该变量,那么我不能在最后一步中使用第一个变量。
从逻辑上讲,这意味着多次传入变量是一个问题(这是有道理的,因为它是作为字符串传入的),因此将该变量作为数组传递似乎是合乎逻辑的方式。这个想法是,当我将参数从一个步骤传递到另一个步骤作为一个数组而不是一个字符串时,我理论上不会遇到这个错误,然后我将能够迭代数组中的项目一步一个for循环。这似乎是SpecFlow应该能够做到的事情,但我在找出如何实现这一点的问题。有没有人有关于如何做到这一点的想法?我试图仅仅使用:
Scenario.Context.Current.Add(string, variable).ToArray();
然而,这并不工作,所有的“ToArray的”的例子我可以SpecFlow文档中发现似乎没有要真正改变的变量你传从一个步骤到另一个步骤到一个数组中,它似乎仅用于单个步骤内部,并且从未在步骤之间传递。在SpecFlow中使用ScenarioContext.Current.Add(string,variable)作为数组传递参数?
在此先感谢。