2012-07-06 46 views

答えて

5

現在、Seleniumにはタブを切り替える機能がありません。このため、ブラウザは新しいウィンドウでリンクを開くように強制しますが、ウィンドウを切り替えることができるため、ブラウザに強制的にアプローチを強制します。このは、それ以降のバージョンで修正される可能性があります。

+0

クリア、ありがとう – khris

10

Seleniumは、今すぐタブを切り替えることができます。以下のコード1はfirefox、code2のために動作します:私たちができるRobotクラスを使ってIEとクロムのためにコントロールは自動的に現在のタブに移動しないので、ウィンドウハンドルメソッドを使って現在のタブに切り替える必要があります。以下のコードはうまくいくでしょう。個々のスクリプトを実行しているときに、スイートとして実行すると、キーボードボードのイベントを実行する際の苦痛を感じるかもしれません。私たちは、セレン - Javaのjavascriptエグゼキュータを使用して、ユーザー定義のjavascriptメソッドを使用することによって、他の可能性に挑戦することを避けるためです。

開いているすべてのウィンドウごとに割り当てられた名前を識別することで、ウィンドウとタブを切り替えることができます。名前は英数字で表示されます。

***Code 1*** 
    //First tab(default tab) 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 

    //second tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("https://yahoo.com"); 

    //third tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("http://www.google.com"); 

    //move to very first tab. 
    driver.findElement(By.cssSelector("body")) 
      .sendKeys(Keys.CONTROL + "\t"); 

    // To close the current tab.  
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w"); 
    **code 2** 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 


    Robot robot = new Robot(); 
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_T); 

    Set<String> handles = driver.getWindowHandles(); 
    List<String> handlesList = new ArrayList<String>(handles); 
    String newTab = handlesList.get(handlesList.size() - 1); 

    // switch to new tab 
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com"); 
関連する問題