2017-10-13 2 views
0

私はWinium.Desktopを使用して私の会社のデスクトップタスクを自動化しています。最初のステップはログインを行うことで、新しいウィンドウが開きます。次のステップは、フォームをフルフィルすることです。時には新しいウィンドウにフォーカスが当てられません。したがって、自動化は現在フォーカスされているウィンドウ(オートメーションの古いウィンドウ)で継続されます。Winium.desktop - 新しいデスクトップウィンドウを処理する

1: String parentHandle = driver.getWindowHandle(); 
2: for (String handle: driver.getWindowHandles()) { 
3: if (!parentHandle.equals(handle)) 
4:  driver.switchTo().window(handle); 
5: } 

は、例外が発生しました:: とjava.lang.ClassCastException:java.lang.Longのはライン上java.lang.Stringで にキャストすることはできません2

ない私はこれを見つけたウェブの周りに検索 私はそれを使用することができますが、上記のコードはブラウザのウィンドウに使用されていたが、それは私の場合ではない。

どのように新しいプログラムウィンドウに集中できますか?

だから参照してくださいサンプルコード

//wait for few seconds for loading site 
    for (String windows : driver.getWindowHandles()) { 

       driver.switchTo().window(windows); 

       if (driver.getCurrentUrl().startsWith("xyz.com")) { 

       //Your Operation 
        } 
       if (driver.getCurrentUrl().startsWith("yzx.com")) { 
    //Your Operation 
        } 


      } 

が、それはあなたの問題を解決します

答えて

0

ありがとうI一時的な解決策を思いついた。

public static final <T> T nthElement(Iterable<T> data, int n){ 
    int index = 0; 
    for(T element : data){ 
     if(index == n){ 
      return element; 
     } 
     index++; 
    } 
    return null; 
} 

public static void focusNewWindow() { 
    Object count = nthElement(driver.getWindowHandles(), 0); 
    driver.switchTo().window(count.toString()); 
} 

このウィンドウをオートメーションで呼び出すたびに、ウィンドウリスト(内部)の最初の要素になります。そこで、インデックスに基づいて要素を返す関数を作成し、2番目のパラメータに0を渡しました。

他のウィンドウを開かずにオートメーションを実行すると機能するため、一時的です。

+0

ユーザーがログインするデスクトッププログラムです。それはウェブブラウザではありません。 – freitas

+0

oww私はコンセプトは同じであると思う – zsbappa

0

を願って...あなたが、あなたは条件に合致することができ、ウィンドウを切り替える必要があり

関連する問題