14

SeleniumWebDriverを使用しています。すべてのリンクが新しいブラウザウィンドウで開かれます。それは私には便利ではありません。新しいタブで開くように変更するにはどうすればよいですか?

4

2 に答える 2

11

Seleniumには、現在タブを切り替える機能があります。以下のcode1:Firefoxで動作します。code2:ロボットクラスを使用してIEとchromeで動作し、コントロールは現在のタブに自動的に移動しないため、ウィンドウハンドルメソッドを使用して現在のタブに切り替える必要があります。以下のコードは、個々のスクリプトを実行している場合はうまく機能しますが、スイートとして実行している場合は、キーボードイベントを実行する際に苦痛を感じる可能性があります。これを回避するために、selenium-Javaでjavascript executorを使用して、ユーザー定義の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");
于 2015-02-24T13:45:47.437 に答える
6

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

于 2012-07-06T08:38:50.783 に答える