2017-05-02 35 views
0

私はいくつかのテストをしており、セレンを使って実行しています。 Altキーが押されたかどうかを確認しようとしています。それが押されたなら、私はAltキーを押してみようとしています。キーが押されていることを確認してください。セレン

しかし、このコードスニペットを実行すると、cki = Console.ReadKey(true);まで取得され、タイムアウトするまでハングアップします。なぜこれがこの行で起こっているのか分かりません。私のコードは以下の通りです。

 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(); 
       } 


      } 

答えて

0

私はSeleniumでこれをやったことがないが、キーがこれに押された場合には、通常、あなたがチェックします:

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

これはSystem.Windows.Input名前空間にあります。

Console.ReadKey(true);は、ユーザーがキーを押すまでプログラムを一時停止し、そのキーを読み取ります。この場合、ユーザーは手動でキーを押す必要がないため、プログラムは永久に一時停止したままです。

退治なら、私に教えてください...あなたの現在のif文はあなたがあなたのReadKeyラインを取り除く場合にも動作するはずのようIMOようだが、再びセレン、これらの機能は検出できない方法で、キーを押すことがありますReadKeyのいずれかが動作するか、上記が動作します。おそらく、セレンの代替溶液があります。

関連する問題