使用 WebDriver、Nunit 和 C# 测试具有不同选项的多个浏览器?
Testing multiple browsers with different options using WebDriver, Nunit and C#?
我正在尝试 运行 使用 WebDriver、Nunit 和 C# 在多个浏览器上进行测试。它正在运行,但我在 Chrome 中收到了烦人的安全警告。为了修复它,我需要使用“.AddArguments(”--test-type”);”重新创建驱动程序。但我只想在这次迭代浏览器 = Chrome 时这样做。这是我的代码。它可以工作,但它会先启动一个不需要的浏览器 window。有人对此有任何想法吗?
namespace SeleniumTests
{
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]
public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver driver;
[SetUp]
public void CreateDriver()
{
this.driver = new TWebDriver(); //Creates a window that needs to be closed and re-constructed
if(driver is ChromeDriver)
{
driver.Quit(); //This kills the un-needed driver window created above
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("--test-type");
driver = new ChromeDriver(chromeOptions);
}
}
你为什么不简单地在基础 class 中创建 chromedriver?您还可以在那里使用 chromoptions
来传递必要的参数。然后使用
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]
这也会避免不必要的代码重复和混乱。
我有驱动程序实例的完整实现here
我认为您在代码中调用了 chrome 两次。这是一个可能对您有所帮助的示例代码。
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
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();
// Navigate
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.com/");
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
if (_driver != null)
_driver.Close();
}
}
}
这里是Github项目的link。
GitHub Link to solution
我正在尝试 运行 使用 WebDriver、Nunit 和 C# 在多个浏览器上进行测试。它正在运行,但我在 Chrome 中收到了烦人的安全警告。为了修复它,我需要使用“.AddArguments(”--test-type”);”重新创建驱动程序。但我只想在这次迭代浏览器 = Chrome 时这样做。这是我的代码。它可以工作,但它会先启动一个不需要的浏览器 window。有人对此有任何想法吗?
namespace SeleniumTests
{
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]
public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver driver;
[SetUp]
public void CreateDriver()
{
this.driver = new TWebDriver(); //Creates a window that needs to be closed and re-constructed
if(driver is ChromeDriver)
{
driver.Quit(); //This kills the un-needed driver window created above
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("--test-type");
driver = new ChromeDriver(chromeOptions);
}
}
你为什么不简单地在基础 class 中创建 chromedriver?您还可以在那里使用 chromoptions
来传递必要的参数。然后使用
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]
这也会避免不必要的代码重复和混乱。
我有驱动程序实例的完整实现here
我认为您在代码中调用了 chrome 两次。这是一个可能对您有所帮助的示例代码。
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
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();
// Navigate
_driver.Manage().Window.Maximize();
_driver.Navigate().GoToUrl("http://www.google.com/");
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
if (_driver != null)
_driver.Close();
}
}
}
这里是Github项目的link。 GitHub Link to solution