2 Stimmen

Watin AddDialogHandler-Methode, die eine Null-Referenz-Ausnahme in FF auslöst

Ich versuche, ConfirmDialogHandler zum Dialog-Handler hinzuzufügen und erhalte NullReferenceException. Dies geschieht auf FF 3.6 mit neuesten watin Version, der gleiche Code funktioniert auf IE7 und 8.

   ConfirmDialogHandler confirmDialogHandler = new ConfirmDialogHandler();
   browser.AddDialogHandler(confirmDialogHandler); // --> exception here

Irgendwelche Ideen?

1voto

alonp Punkte 1287

Alte Lösung

Ich habe das Problem gefunden.

Der DialogWatcher wurde nicht initialisiert, als die FF-Sitzung erstellt wurde, und diese Zeile wurde dem watin-Code hinzugefügt:

    private void CreateFireFoxInstance(string url)
    {
        Logger.LogAction("Creating FireFox instance");

        UtilityClass.MoveMousePoinerToTopLeft(Settings.AutoMoveMousePointerToTopLeft);

        var clientPort = GetClientPort();
        clientPort.Connect(url);
        _ffBrowser = new FFBrowser(clientPort);
        StartDialogWatcher();  // <-- Added line
        WaitForComplete();
    }

Bitte beachten Sie - Dies ist die Umgehung

Die angebotene Lösung hat nicht funktioniert Dies ist mein Workaround: Ich habe die AutoIt dll verwendet und die Popups selbst bearbeitet, Codebeispiel:

    using AutoItX3Lib;

    public static void RunAutomaticEnterCommand(Session session)
    {
        var autoIt = GetPopupHandle();
        autoIt.Send("{ENTER}");
        Thread.Sleep(1000);
    }

    /// <summary>
    /// Cancel the popup
    /// For FF
    /// </summary>
    /// <param name="session"></param>
    public static void RunAutomaticCancelCommand(Session session)
    {
        var autoIt = GetPopupHandle();
        autoIt.Send("{TAB}");
        autoIt.Send("{ENTER}");
        Thread.Sleep(1000);
    }

    /// <summary>
    /// Return the autoit popup handler
    /// AutoIt is a script language, we using it to handle the firefox popups
    /// </summary>
    /// <returns></returns>
    private static AutoItX3Class GetPopupHandle()
    {
        var autoIt = new AutoItX3Class();
        autoIt.AutoItSetOption("WinTitleMatchMode", 2);
        const string partialTitle = "The page at"; //the popup in Firefox starts with this text
        autoIt.WinWait(partialTitle, "", 30);
        string fullTitle = autoIt.WinGetTitle(partialTitle); //Get the whole popup title

        autoIt.WinActivate(fullTitle); //Get focis to the popup
        if (autoIt.WinWaitActive(fullTitle, "", 20) == 0)
        {
            reporter.Report("Failed to get the FireFox popup handle", false);
            return autoIt;
        }
        return autoIt;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X