मैं लूसिफ़ेर के समाधान के लिए एक महत्वपूर्ण बदलाव के सुझाव देते हैं। विशेषता फैक्ट/थ्योरी विधियों के लिए एक कारखाने नहीं, एक कारखाने की आपूर्ति है। क्यूं कर? खैर, जब आप उन सभी ब्राउज़र विंडो पॉप-अप (n x m, जहां n = परीक्षणों की संख्या, एम = ब्राउज़र प्रति परीक्षण), आप तय करेंगे कि परीक्षा केवल वास्तव में चल रही है जब परीक्षण चलाने के लिए।
तो कुछ नाम परिवर्तन तथा इसके पहले के समाधान, से अद्यतन के साथ ...
using OpenQA.Selenium;
using SeleniumPageObjectsPatternExample.Attributes;
using SeleniumPageObjectsPatternExample.PageObjects;
using Xunit;
using Xunit.Extensions;
namespace SeleniumHelpers
{
public class HomepageTests
{
[Theory]
[WebDriver(DriverType.Firefox)]
[WebDriver(DriverType.GoogleChrome)]
public void HomepageLinksToBlogPage(WebDriverFactory factory)
{
// arrange
IWebDriver webDriver = factory.Create(); // Browser starts here.
var expected = "some expected value";
// act
var homepage = new HomePage(webDriver, true);
// assert
Assert.True(homepage.BlogLink.Displayed);
Assert.Equal(expected, homepage.Header.Text);
// Optional cleanup (better wrapped in try/finally for entire method).
webDriver.Quit();
webDriver.Dispose();
}
}
}
अपडेट किया गया DataAttribute ... (ध्यान दें, मैं विधि GetData() के हस्ताक्षर नवीनतम XUnit के साथ काम करने के लिए सही।)
using System.Reflection;
using OpenQA.Selenium;
using Xunit.Extensions;
namespace SeleniumHelpers
{
public class WebDriverAttribute : DataAttribute
{
private WebDriverFactory WebDriverFactory { get; set; }
public WebDriverAttribute(Type browser)
{
this.WebDriver = WebDriverFactory.Create(browser);
}
public override IEnumerable<object[]> GetData(MethodInfo methodUnderTest)
{
return new[] { new[] { this.WebDriverFactory } };
}
}
}
नई WebDriverFactory
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
namespace SeleniumHelpers
{
public enum DriverType
{
Firefox,
GoogleChrome
}
public class WebDriverFactory
{
private DriverType _driverType;
public WebDriverFactory(DriverType driverType)
{
_driverType = driverType;
}
public static IWebDriver Create(Type browser)
{
IWebDriver webDriver;
switch (browser)
{
case Type.Firefox:
webDriver = new FirefoxDriver();
break;
case Type.GoogleChrome:
webDriver = new ChromeDriver();
break;
default:
webDriver = new ChromeDriver();
break;
}
webDriver.Manage().Window.Maximize();
return webDriver;
}
}
}
स्रोत
2015-08-25 08:42:34