0

リフレクションを使用して、新しい webdriver クラスを作成したいと考えています。

私のコードは次のようになります:

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

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

しかし失敗します。ドライバーは何も表示せず、値は null です。

場所がOpenQA.Selenium.Firefox悪いのでしょうか?

4

2 に答える 2

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 に答える
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 に答える