2017-05-02 6 views
0

Ich habe eine Reihe von Tests und verwende Selen, um sie auszuführen. Ich versuche zu überprüfen, ob die Alt-Taste gedrückt wurde. Wenn es gedrückt wurde, versuche ich eine Taste auf Alt zu drücken.Überprüfen, ob die Taste gedrückt wurde Selen

Allerdings, wenn ich dieses Code-Schnipsel laufen lassen, wird es bis cki = Console.ReadKey(true); gehen und dann einfach bis zum Timeout hängen. Nicht sicher, warum das auf dieser Linie passiert. Mein Code ist wie folgt.

 Actions action = new Actions(driver); 
     ConsoleKeyInfo cki; 

     Console.TreatControlCAsInput = true; 

      while (true) 
      { 
       action.KeyDown(Keys.Alt).Build().Perform(); 
       cki = Console.ReadKey(true); 
       if ((cki.Modifiers & ConsoleModifiers.Alt) != 0) 
       { 
        action.KeyUp(Keys.Alt).Build().Perform(); 
       } 


      } 

Antwort

0

Während ich habe noch nie in Selenium getan, normalerweise würden Sie überprüfen, ob ein Schlüssel mit diesem gedrückt wurde:

if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)) 

im System.Windows.Input Namespace Dies ist.

Console.ReadKey(true); pausiert das Programm, bis ein Benutzer eine Taste drückt, und dann wird es diesen Schlüssel lesen. In diesem Fall haben Sie keinen Benutzer, der manuell eine Taste drückt, sodass das Programm für immer pausiert bleibt.

IMO scheint es, wie Ihre aktuelle if Aussage sollte auch funktionieren, wenn Sie Ihre ReadKey Linie loszuwerden, aber auch hier könnte Selen in einer Art und Weise das Drücken von Tasten werden diese Funktionen nicht erkennen kann ... Lassen Sie mich wissen, wenn das Loswerden von ReadKey funktioniert, oder die oben genannten Arbeiten. Wenn nicht, gibt es vielleicht eine alternative Selenlösung.

Verwandte Themen