2016-07-12 6 views
-1

ここで問題となるのは、新しいタブ/ウィンドウにフォーカスを合わせることができず、代わりにフォーカスが最初のものに残ります。助けてください。Selenium Webdriverを使用してInternet Explorerのnewtab/windowにフォーカスを切り替えることができません

driver=new InternetExplorerDriver(); 
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); 
//driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"n"); 
for (String winHandle : driver.getWindowHandles()) 
{ 
    driver.switchTo().window(winHandle); 
} 
driver.get("https://google.com/"); 
+0

あなたの研究を共有することで、皆が役に立ちます。何を試したのか、それがあなたのニーズを満たしていない理由を教えてください。これは、時間をかけて自分自身を助けようとしていることを示しています。明白な回答を繰り返さないようにしてくれています。そして、より具体的で適切な答えを得ることができます。 [ask]も参照してください。 – JeffC

+0

私は上記のコードを試してみました。Firefoxのブラウザとソリューションではうまくいきます。[リンク] http://stackoverflow.com/questions/19117747/how-to-switch-between-two-windows-in-browser- using-selenium-java [link] – Ravi

答えて

0

あなたが求めているものを達成するための最も簡単な方法は、これらの線に沿って何かである:

  1. は初期ウィンドウのハンドルを取得します。
  2. 新しいウィンドウを開きます。
  3. この時点で開いているすべてのウィンドウのハンドルリストを取得し、初期ウィンドウハンドルを削除します。
  4. 前の手順で取得したリストの残りのウィンドウハンドルに切り替えます。
+0

この@Tom Trumperにコードを教えてください。 – Ravi

1

IEドライバは、ウィンドウ内のタブの列挙をサポートしていません。さらに、WebDriverは一般に、Control+tで開かれたような「手動で」開かれたタブの自動化をサポートしていません。特定のドライバがその機能をサポートするかもしれませんが、API契約の世界的にサポートされている部分ではありません。

ユーザーが「手動で新しいタブを開いて切り替え、自動化しようとしている」という大部分の時間は、ユースケース全体が完全には理解されていません。新しいウィンドウで新しいドライバインスタンスを開始するのではなく、このアクションを実行する理由を述べることを拒否しているので、どのようなアクションを取るべきか推測することは不可能です。

0

thisを試してみましょう。タブを使用してJavaロボットを切り替えた後に切り替えてください。次のコードは、あなたの問題を解決するのと同じ原則を使用しています。

ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles()); 
    System.out.println(tabs2.size()); 

    for (int i = tabs2.size()-1; i>=0; i--) { 
     Thread.sleep(2000); 
     driver.switchTo().window(tabs2.get(i)); 
     Robot robot = new Robot(); 

     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.keyPress(KeyEvent.VK_TAB); 
     robot.keyRelease(KeyEvent.VK_TAB); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 
     System.out.println(driver.getTitle() + "i: " + i); 
     driver.close(); 
    } 
関連する問題