在不同浏览器上有条件地执行自动化测试
Conditional execution of automation tests on different browsers
我想在三个浏览器上执行测试,我想有条件地执行此测试。
示例 - 如果浏览器名称是 chrome,请转至 Google.com 并搜索 selenium testing。如果浏览器名称是 Firefox,则搜索 MongoDB。
这只是一个示例代码解决方案,但我需要在我的项目中实现这个概念。
我正在使用 Nunit 的 TestFixture 属性在多个浏览器上执行测试,我想继续使用 NUnit。
这是我正在使用的代码示例。
注意:由于测试夹具属性中的搜索参数,您可能看不到测试资源管理器中的测试。
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using NUnit;
namespace MultipleBrowserTesting
{
[TestFixture(typeof(FirefoxDriver), "MongoDB")]
[TestFixture(typeof(ChromeDriver), "Selenium Testing")]
[TestFixture(typeof(InternetExplorerDriver), "ElasticSearch")]
public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver _driver;
[Test]
public void Can_Visit_Google(string searchString)
{
_driver = new TWebDriver();
// Navigate
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
_driver.FindElement(By.Id("lst-ib")).SendKeys("searchString");
_driver.FindElement(By.Name("btnK")).Click();
FixtureTearDown();
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
// if (_driver != null)
_driver.Close();
}
}
}
我想我传递参数的方式有误。我已经提到这个link。
我已经找到了我自己问题的答案。这是该示例代码。如果您有更好的解决方案,请 post 提出。谢谢!
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using NUnit;
using OpenQA.Selenium.Remote;
namespace MultipleBrowserTesting
{
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver _driver;
[Test]
public void Can_Visit_Google()
{
_driver = new TWebDriver();
ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities;
string browser = capabilities.BrowserName;
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
if (browser == "internet explorer")
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB");
}
else if (browser == "chrome")
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch");
}
else
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium");
}
_driver.FindElement(By.Name("btnG")).Click();
FixtureTearDown();
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
_driver.Close();
}
}
}
一些技术人员可能会争论 if else if so 的用法,这是使用 switch 的另一种解决方案。
public void Can_Visit_Google()
{
_driver = new TWebDriver();
ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities;
string browser = capabilities.BrowserName;
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
switch (browser)
{
case ("internet explorer"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch");
break;
case ("chrome"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB");
break;
case ("firefox"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium");
break;
}
_driver.FindElement(By.Name("btnG")).Click();
FixtureTearDown();
}
我想在三个浏览器上执行测试,我想有条件地执行此测试。
示例 - 如果浏览器名称是 chrome,请转至 Google.com 并搜索 selenium testing。如果浏览器名称是 Firefox,则搜索 MongoDB。 这只是一个示例代码解决方案,但我需要在我的项目中实现这个概念。
我正在使用 Nunit 的 TestFixture 属性在多个浏览器上执行测试,我想继续使用 NUnit。
这是我正在使用的代码示例。
注意:由于测试夹具属性中的搜索参数,您可能看不到测试资源管理器中的测试。
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using NUnit;
namespace MultipleBrowserTesting
{
[TestFixture(typeof(FirefoxDriver), "MongoDB")]
[TestFixture(typeof(ChromeDriver), "Selenium Testing")]
[TestFixture(typeof(InternetExplorerDriver), "ElasticSearch")]
public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver _driver;
[Test]
public void Can_Visit_Google(string searchString)
{
_driver = new TWebDriver();
// Navigate
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
_driver.FindElement(By.Id("lst-ib")).SendKeys("searchString");
_driver.FindElement(By.Name("btnK")).Click();
FixtureTearDown();
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
// if (_driver != null)
_driver.Close();
}
}
}
我想我传递参数的方式有误。我已经提到这个link。
我已经找到了我自己问题的答案。这是该示例代码。如果您有更好的解决方案,请 post 提出。谢谢!
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using NUnit;
using OpenQA.Selenium.Remote;
namespace MultipleBrowserTesting
{
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver _driver;
[Test]
public void Can_Visit_Google()
{
_driver = new TWebDriver();
ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities;
string browser = capabilities.BrowserName;
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
if (browser == "internet explorer")
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB");
}
else if (browser == "chrome")
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch");
}
else
{
_driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium");
}
_driver.FindElement(By.Name("btnG")).Click();
FixtureTearDown();
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
_driver.Close();
}
}
}
一些技术人员可能会争论 if else if so 的用法,这是使用 switch 的另一种解决方案。
public void Can_Visit_Google()
{
_driver = new TWebDriver();
ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities;
string browser = capabilities.BrowserName;
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.ie/");
switch (browser)
{
case ("internet explorer"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch");
break;
case ("chrome"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB");
break;
case ("firefox"):
_driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium");
break;
}
_driver.FindElement(By.Name("btnG")).Click();
FixtureTearDown();
}