我有一些 C# 中的 Web ui 测试,这些测试是通过 browserstack 中的 selenium 执行的。目前,这些只是简单的单位毫秒测试,它们是在不同的浏览器上执行的。
我想将测试移植到specflow,但我真的不知道如何进行多浏览器测试。
目前,为了在多个浏览器中执行这些测试,我正在使用数据源 http://msdn.microsoft.com/en-us/library/ms182527.aspx属性,它基本上从 XML 文件中为相同的测试获取不同的输入
[TestMethod]
[Ignore]
[DeploymentItem("JLL.Specs\\Browsers.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\Browsers.xml", "Row", DataAccessMethod.Sequential)]
public void LoadHomePageAndFindSearchBox()
{
...
}
问题是 Specflow 不支持 DataSource 属性。
任何想法?
这是 XML 文件:
<?xml version="1.0" encoding="utf-8" ?>
<Rows>
<Row>
<browser>Firefox</browser>
<browser_version>31.0</browser_version>
<os>Windows</os>
<os_version>7</os_version>
<resolution>1280x1024</resolution>
<browserName></browserName>
<platform></platform>
<device></device>
</Row>
<Row>
<browser>Chrome</browser>
<browser_version>36.0</browser_version>
<os>Windows</os>
<os_version>XP</os_version>
<resolution>1024x768</resolution>
<browserName></browserName>
<platform></platform>
<device></device>
</Row>
...
您可以使用 Web 驱动程序抽象框架来编写与驱动程序无关的测试代码。为此,我使用了Coypu https://github.com/featurist/coypu。使用这个库,您可以轻松地在不同的 Web 驱动程序(例如 Selenium、Phantomjs、Wait)之间切换,而无需编写不同的驱动程序代码。
在网络驱动程序工厂类中,您可以使用类似的代码(请参阅here https://github.com/featurist/coypu#driver了解更多信息):
sessionConfiguration.Driver = Type.GetType("Coypu.Drivers.Selenium.SeleniumWebDriver, Coypu");
sessionConfiguration.Browser = Drivers.Browser.Parse("firefox");
获取 FireFox 的 Selenium 实例,或者您可以将“firefox”替换为“chrome”以获取 Chrome 实例。
我已经使用这种方法为不同的浏览器运行了一套测试,效果很好。然而,这意味着为一个浏览器执行一套测试,然后在完成后为另一个浏览器运行它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)