2016-04-24 11 views
0

Ich benutze Selen mit C# (Standard-Browser - FireFoX).Selenium - Wie man Popup mit Event Listener (C#)

Es gibt einige Seiten, die Nachrichten nach unbekannter Zeit (falls vorhanden) anzeigen.

Ich kann nicht warten oder schlafen, weil ich nicht weiß, auf welchem ​​Bildschirm das Popup erscheint. Die Verwendung von 'try-Catch' auf jeder Seite ist nicht sehr intelligent ....

Die Lösung, an die ich gedacht habe, ist die Verwendung eines Ereignis-Listeners, um das Popup/s zu hören und dann klickt es auf die 'X' Schaltfläche . Natürlich muss sich der Listener in einem Thread befinden, und jeder Test kann ein Array von Threads haben, das die Liste der Ereignisse und XPath/IDs abruft.

Hat jemand solche Dinge getan? Gibt es ein Beispiel/Artikel/Tutorial, um mir dabei zu helfen?

10X,

Gil

Antwort

0

Denken eines alten chinesischen proverb, wenn sie mit solchen Fragen konfrontiert sind, gehe ich zum SeleniumHQ Github-Repository und Blick auf die tests.

Sie möchten, dass Ihre Wartezeit klein ist, damit Sie nicht zu lange warten müssen, wenn kein Alarm vorliegt. Sie können den Popup-Bearbeitungscode aufrufen, wenn eine Seite geöffnet wird oder kurz bevor der Test diese Seite verlässt. hängt vom Verhalten Ihrer Anwendung ab.

0

Ich würde einfach die FirefoxDriver außer Kraft setzen, um automatisch die Warnung zu akzeptieren und die Warnung Ausnahme zum Schweigen bringen:

class FirefoxDriverEx : FirefoxDriver { 

    private static DesiredCapabilities Capabilities() { 
     var capa = DesiredCapabilities.Firefox(); 
     capa.SetCapability(CapabilityType.UnexpectedAlertBehavior, "accept"); 
     return capa; 
    } 

    public FirefoxDriverEx() 
     : base(Capabilities()) { } 

    protected override Response Execute(string driverCommandToExecute, Dictionary<string, object> parameters) { 
     try{ 
      return base.Execute(driverCommandToExecute, parameters); 
     } catch (UnhandledAlertException) { 
      return base.Execute(driverCommandToExecute, parameters); 
     } 
    } 
} 

Hier ist ein Anwendungsbeispiel:

var driver = new FirefoxDriverEx(); 
driver.Navigate().GoToUrl("http://the-internet.herokuapp.com/javascript_alerts"); 
driver.FindElementByXPath("//button[.='Click for JS Alert']").Click(); 
string text = driver.FindElementById("result").Text; 
+0

kühlen. Ich sehe nur * UnexpectedAlertBehavior * in den C# - und Javascript-Selenbibliotheken. – MikeJRamsey56