我目前正在尝试使用 Selenium Grid 2 在多个浏览器上运行自动化测试。在我的研究过程中,我遇到了使用 Baseclass.Contrib.Specflow,它使我能够将浏览器用作功能文件中的标签,而无需在我的主驱动程序类中声明它。我遇到的问题是我读过的博客之一将以下内容作为设置代码
[SetUp]
public void Test_Setup(){
CurrentDriver = Browser.Current;}
我的应用程序配置文件看起来包含以下内容:
<components>
<!-- <component name="Firefox" type="OpenQA.Selenium.Firefox.FirefoxDriver, WebDriver" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
</component>-->
<component name="Firefox"
type="Baseclass.Contrib.SpecFlow.Selenium.NUnit.RemoteWebDriver, Baseclass.Contrib.SpecFlow.Selenium.NUnit.SpecFlowPlugin"
service="OpenQA.Selenium.IWebDriver, WebDriver"
instance-scope="per-dependency">
<parameters>
<parameter name="url" value=" http://localhost/wd/hub" />
<parameter name="browser" value="Firefox" />
</parameters>
</component>
<component name="Safari" type="Baseclass.Contrib.SpecFlow.Selenium.NUnit.RemoteWebDriver, Baseclass.Contrib.SpecFlow.Selenium.NUnit.SpecFlowPlugin" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
<parameters>
<parameter name="url" value=" http://localhost/wd/hub" />
<parameter name="desiredCapabilities" value="Chrome" />
</parameters>
</component>
当我尝试使用上述安装方法运行脚本时出现错误。
Error:
System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键
我从中得到这个解决方案的博客似乎没有回答与此相关的问题,所以我有点绝望。这基本上允许我对功能文件执行以下操作并根据标签运行测试
@Browser:Firefox
@Browser:Chrome
希望这是足够的信息来给我建议。
您在这里犯的错误是您使用标签注释整个功能文件@Browser
.
Baseclass.Contrib.Specflow
允许您注释场景具有支持浏览器的场景。因此,您必须对每个场景进行注释。
如果您不这样做,则没有为该测试设置当前浏览器并尝试访问Browser.Current
会扔System.Collections.Generic.KeyNotFoundException
.
当生成的单元测试将包含浏览器名称作为单元测试名称的一部分时,您就知道您做得正确,例如
<Test Name> on <Browser> with: <parameters>
Example:
@Browser:IE
@Browser:Chrome
@Browser:Firefox
Scenario Outline: Add Two Numbers
>Given I navigated to / using
And I have entered <summandOne> into summandOne calculator
And I have entered <summandTwo> into summandTwo calculator
When I press add
Then the result should be <result> on the screen
Scenarios:
| summandOne| summandTwo|result|
| 10 | 20 | 30 |
| 3 | 4 | 7 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)