-2

一番下のアップデートを見てください!

フレームワークをセットアップしており、現在 4 つのテストがあります。個々に、それらはすべて魅力のように実行されます。ただし、4つすべてを並行して実行しようとすると( Parallelizable 属性を正しく設定し、同じメソッド内ではない異なるクラスからテストを呼び出しています)、各テストを飛び越えるように見えるいくつかのエラーが一貫して発生します。これらは、実行ごとに表示されるメッセージです。ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

これらのオブジェクトは、テストが個別に実行されたときに検出されます。支援するために表示する必要があるコードがわかりません。お知らせ下さい。

更新** @Chris 私の疑いは同じです。私のテストは、オブジェクトを探すときに同じドライバーを混乱させていると思います。その場合、誰かがこれをより適切に処理する方法を教えてください。私のブラウザ クラスは、ドライバを呼び出しているものです。

 public  static class Browser
{
    private static IWebDriver driver;
    private  static string baseURL = "someURL";

    public static ISearchContext Driver { get { return driver; } }

    internal static bool WaitUntilElementIsDisplayed(By element, int timeout)
    {
        for (int i = 0; i < timeout; i++)
        {
            if (ElementIsDisplayed(element))
            {
                return true;
            }
            Thread.Sleep(1000);
        }
        return false;
    }

    internal static IWebElement FindElement(By by)
    {

        return driver.FindElement(by);
    }

    public static bool ElementIsDisplayed(By element)
    {
        var present = false;
        driver.Manage().Timeouts().ImplicitlyWait(System.TimeSpan.FromSeconds(0));
        try
        {
            present = driver.FindElement(element).Displayed;
        }
        catch (NoSuchElementException)
        { }
        driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
        return present;

    }



    public static void Initialize()
    {
        var options = new InternetExplorerOptions();
        options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
        options.EnsureCleanSession = true;
        options.IgnoreZoomLevel = true;

        driver =
            new InternetExplorerDriver(

                @"C:Myfilepath",
                options, TimeSpan.FromMinutes(10));

        Goto("");
    }

    public static void CleanUp()
    {
        driver.Close();
        driver.Quit();
    }

    public static void Goto(string URL, bool userBaseURL = true)
    {
        if (userBaseURL)
            driver.Navigate().GoToUrl(string.Format("{0}/{1}", baseURL, URL));
        else
            driver.Navigate().GoToUrl(URL);
    }


}

最新の更新: 推奨事項に従って、静的参照を削除しましたが、現在のコード内でドライバーのインスタンスを作成する際の構文について誰かが助けてくれます

public class Pages
{
    private  T GetPage<T>() where T : new()
    {
        var page = new T();
        PageFactory.InitElements(Browser.Driver, page);
        return page;
    }
    public  LoginPage Login
    {
        get { return GetPage<LoginPage>(); }
    }

    public  RegisterPage Register
    { get { return GetPage<RegisterPage>(); } }

    public  SearchPage Search
    { get { return GetPage<SearchPage>(); } }
}

Browser.Driver のインスタンスを作成する方法がわかりません。助けてください!

4

2 に答える 2