0

我想使用反射来新建一个 webdriver 类。

我的代码是这样的:

<i>public static IWebDriver driver;</i>

<i>driver = (IWebDriver)Assembly.Load("OpenQA.Selenium.Firefox").CreateInstance("OpenQA.Selenium.Firefox.FirefoxDriver");</i>

但它失败了。驱动程序什么也不显示,值为空。

是不是位置OpenQA.Selenium.Firefox不对?

4

2 回答 2

0

为什么不只使用一个开关,例如:

        IWebDriver driver;

        switch (BrowserType)
        {
            case "Firefox":
                driver = new FirefoxDriver();
                break;
            case "IE":
                driver = new InternetExplorerDriver();
                break;
            default:
                break;
        }
        driver.Navigate().GoToUrl(HomeUrl);
于 2012-05-03T05:36:10.597 回答
0

您可以使用反射来执行此操作。我认为在上面的示例代码中,您使用的是类所在的命名空间,而不是程序集的名称。这是一个松散地基于 Selenium 项目本身的单元测试所做的例程。

// Note that assemblyName should normally be "WebDriver". It's provided
// as an argument here just in case there's a third-party driver
// implementation for a browser not supported by the core project.
// driverClassName should be something like "OpenQA.Selenium.Firefox.FirefoxDriver"
public IWebDriver CreateDriver(string assemblyName, driverClassName)
{
    // TODO: Handle argument validation and exception handling
    // for error conditions.
    Assembly assembly = Assembly.Load(assemblyName);
    Type driverType = assembly.GetType(driverClassName);
    return (IWebDriver)Activator.CreateInstance(driverType);
}
于 2012-05-06T06:12:02.583 回答